Custom Query (245 matches)
Results (19 - 21 of 245)
Ticket | Resolution | Summary | Owner | Reporter |
---|---|---|---|---|
#347 | duplicate | Make stdint.h be aware of C++11 | ||
Description |
Hi/2. C++11 does not requires additinoal macros to define some constant/limit macros of stdint.h. |
|||
#382 | duplicate | multiple files with same indoe are created | ||
Description |
Hi/2. When heavily fork()ed, multiple files with same inode are created. Because sometimes forked() child processes have the same seed value. Some programs checking inodes such as mv, cp, install of coreutils, fails because they treat files with same inodes as the same files. This always occurs when running 'bootstrap' script in coreutils git repo. mv fails with complaining ./m4/.gitignore.bak and ./m4/.gitignore are the same file. |
|||
#5 | wontfix | @response handling incomplete | ||
Description |
response file handling has problems: doesn't accept long lines, does not support multiple args per line, doesn't remove white spaces. This is a partial fix Index: lib/misc/response.c =================================================================== RCS file: /netlabs.cvs/libc/src/emx/src/lib/misc/response.c,v retrieving revision 1.1.1.1 diff -u -r1.1.1.1 response.c --- lib/misc/response.c 2004/06/08 12:03:44 1.1.1.1 +++ lib/misc/response.c 2005/10/24 14:56:24 @@ -1,6 +1,7 @@ /* response.c (emx+gcc) -- Copyright (c) 1990-1996 by Eberhard Mattes */ #include "libc-alias.h" +#include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> @@ -23,7 +24,7 @@ { int i, old_argc, new_argc, new_alloc; char **old_argv, **new_argv; - char line[1+512], *p; + char line[1+8192], *p; FILE *f; old_argc = *argcp; old_argv = *argvp; @@ -47,12 +48,29 @@ line[0] = _ARG_NONZERO|_ARG_RESPONSE; while (fgets (line+1, sizeof (line)-1, f) != NULL) { - p = strchr (line+1, '\n'); - if (p != NULL) *p = 0; - p = strdup (line); - if (p == NULL) - goto out_of_memory; - RPUT (p+1); + char* token; + p = line+1; + // YD tokenize line, OOo uses \t to separate arguments + token = strtok( p, " \t\r\n"); + while( token) { + char* p1 = strdup (token); + if (p1 == NULL) + goto out_of_memory; + // YD strip begin/end whitespaces + while (isspace(p1[strlen(p1)-1])) + p1[strlen(p1)-1] = 0; + while (isspace(*p1)) + p1++; + // YD strip begin&end quotes + if (*p1 == '\"' && p1[strlen(p1)-1] == '\"') { + p1++; + p1[strlen(p1)-1] = 0; + } + // YD don't add zero-len arguments! + if (strlen(p1)>0) + RPUT (p1); + token = strtok( NULL, " \t\r\n"); + } } if (ferror (f)) { |