Changeset 611 in kBuild
- Timestamp:
- Nov 26, 2006 5:35:06 AM (18 years ago)
- Location:
- trunk
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ChangeLog
r601 r611 3 3 2006-11-25: 4 4 - kmk, kBuild: 5 o Added cat as builtin command. 6 o Added GNU sed version 4.1.5 and ported it to MSC. 5 7 o Added rmdir as builtin and external command. 6 8 o Made mkdir not modify the argument strings. -
trunk/src/gmake/Makefile.kmk
r601 r611 97 97 kmkbuiltin.c \ 98 98 kmkbuiltin/append.c \ 99 kmkbuiltin/cat.c \ 99 100 kmkbuiltin/cp.c \ 100 101 kmkbuiltin/cp_utils.c \ … … 124 125 # Standalone kmkbuiltin commands. 125 126 # 126 PROGRAMS += kmk_append kmk_c p kmk_echo kmk_mkdir kmk_install kmk_ln kmk_rm kmk_rmdir127 PROGRAMS += kmk_append kmk_cat kmk_cp kmk_echo kmk_mkdir kmk_install kmk_ln kmk_rm kmk_rmdir 127 128 128 129 kmk_append_TEMPLATE = BIN … … 132 133 kmkbuiltin/append.c \ 133 134 kmkbuiltin/err.c 135 136 kmk_cat_TEMPLATE = BIN 137 kmk_cat_DEFS = kmk_builtin_cat=main 138 kmk_cat_SOURCES = \ 139 kmkbuiltin/cat.c \ 140 kmkbuiltin/err.c 141 ifeq ($(filter-out win32 win64 win nt,$(BUILD_TARGET)),) 142 kmk_cat_INCS += $(PATH_TARGET) . 143 kmk_cat_DEFS += HAVE_CONFIG_H 144 kmk_cat_SOURCES += \ 145 kmkbuiltin/mscfakes.c \ 146 getopt.c \ 147 getopt1.c 148 endif 134 149 135 150 kmk_cp_TEMPLATE = BIN -
trunk/src/gmake/kmkbuiltin.c
r601 r611 198 198 else if (!strcmp(pszCmd, "rmdir")) 199 199 rc = kmk_builtin_rmdir(argc, argv, environ); 200 /* obsolete */ 200 else if (!strcmp(pszCmd, "cat")) 201 rc = kmk_builtin_cat(argc, argv, environ); 201 202 else if (!strcmp(pszCmd, "cp")) 202 203 rc = kmk_builtin_cp(argc, argv, environ); -
trunk/src/gmake/kmkbuiltin.h
r370 r611 30 30 extern int kmk_builtin_append(int argc, char **argv, char **envp); 31 31 extern int kmk_builtin_cp(int argc, char **argv, char **envp); 32 extern int kmk_builtin_cat(int argc, char **argv, char **envp); 32 33 extern int kmk_builtin_echo(int argc, char **argv, char **envp); 33 34 extern int kmk_builtin_install(int argc, char **argv, char **envp); -
trunk/src/gmake/kmkbuiltin/cat.c
r609 r611 44 44 #endif 45 45 #endif /* not lint */ 46 #if 0 46 47 #include <sys/cdefs.h> 47 48 __FBSDID("$FreeBSD: src/bin/cat/cat.c,v 1.32 2005/01/10 08:39:20 imp Exp $"); 48 49 #else 50 #define NO_UDOM_SUPPORT /* kmk */ 51 #endif 52 53 #ifndef _MSC_VER 49 54 #include <sys/param.h> 55 #endif 50 56 #include <sys/stat.h> 51 57 #ifndef NO_UDOM_SUPPORT … … 56 62 57 63 #include <ctype.h> 58 #include <err.h>64 #include "err.h" 59 65 #include <fcntl.h> 60 66 #include <locale.h> … … 62 68 #include <stdlib.h> 63 69 #include <string.h> 70 #ifndef _MSC_VER 64 71 #include <unistd.h> 72 #else 73 #include "mscfakes.h" 74 #endif 65 75 #include <stddef.h> 66 76 67 77 int bflag, eflag, nflag, sflag, tflag, vflag; 68 int rval; 78 /*int rval;*/ 69 79 const char *filename; 70 80 71 static voidusage(void);72 static voidscanfiles(char *argv[], int cooked);73 static voidcook_cat(FILE *);74 static voidraw_cat(int);81 static int usage(void); 82 static int scanfiles(char *argv[], int cooked); 83 static int cook_cat(FILE *); 84 static int raw_cat(int); 75 85 76 86 #ifndef NO_UDOM_SUPPORT … … 79 89 80 90 int 81 main(int argc, char *argv[]) 82 { 83 int ch; 84 91 kmk_builtin_cat(int argc, char *argv[]) 92 { 93 int ch, rc; 94 95 /* kmk: reinitialize globals */ 96 bflag = eflag = nflag = sflag = tflag = vflag = 0; 97 filename = NULL; 98 99 /* kmk: reset getopt and set progname */ 100 g_progname = argv[0]; 101 opterr = 1; 102 optarg = NULL; 103 optopt = 0; 104 #if defined(__FreeBSD__) || defined(__EMX__) || defined(__APPLE__) 105 optreset = 1; 106 optind = 1; 107 #else 108 optind = 0; /* init */ 109 #endif 110 111 #ifdef kmk_builtin_cat /* kmk did this already. */ 85 112 setlocale(LC_CTYPE, ""); 113 #endif 86 114 87 115 while ((ch = getopt(argc, argv, "benstuv")) != -1) … … 109 137 break; 110 138 default: 111 usage();139 return usage(); 112 140 } 113 141 argv += optind; 114 142 115 143 if (bflag || eflag || nflag || sflag || tflag || vflag) 116 scanfiles(argv, 1);144 rc = scanfiles(argv, 1); 117 145 else 118 scanfiles(argv, 0); 146 rc = scanfiles(argv, 0); 147 #ifdef kmk_builtin_cat /* only in the external program. */ 119 148 if (fclose(stdout)) 120 err(1, "stdout");121 exit(rval); 122 /* NOTREACHED */123 } 124 125 static void149 return err(1, "stdout"); 150 #endif 151 return rc; 152 } 153 154 static int 126 155 usage(void) 127 156 { 128 157 fprintf(stderr, "usage: cat [-benstuv] [file ...]\n"); 129 exit(1); 130 /* NOTREACHED */ 131 } 132 133 static void 158 return 1; 159 } 160 161 static int 134 162 scanfiles(char *argv[], int cooked) 135 163 { … … 137 165 char *path; 138 166 FILE *fp; 167 int rc2 = 0; 168 int rc = 0; 139 169 140 170 while ((path = argv[i]) != NULL || i == 0) { … … 154 184 if (fd < 0) { 155 185 warn("%s", path); 156 r val = 1;186 rc2 = 1; /* non fatal */ 157 187 } else if (cooked) { 158 188 if (fd == STDIN_FILENO) 159 cook_cat(stdin);189 rc = cook_cat(stdin); 160 190 else { 161 191 fp = fdopen(fd, "r"); 162 cook_cat(fp);192 rc = cook_cat(fp); 163 193 fclose(fp); 164 194 } 165 195 } else { 166 r aw_cat(fd);196 rc = raw_cat(fd); 167 197 if (fd != STDIN_FILENO) 168 198 close(fd); 169 199 } 170 if ( path == NULL)200 if (rc || path == NULL) 171 201 break; 172 202 ++i; 173 203 } 174 } 175 176 static void 204 return !rc ? rc2 : rc; 205 } 206 207 static int 177 208 cook_cat(FILE *fp) 178 209 { 179 210 int ch, gobble, line, prev; 211 int rc = 0; 180 212 181 213 /* Reset EOF condition on stdin. */ … … 228 260 if (ferror(fp)) { 229 261 warn("%s", filename); 230 r val= 1;262 rc = 1; 231 263 clearerr(fp); 232 264 } 233 265 if (ferror(stdout)) 234 err(1, "stdout"); 235 } 236 237 static void 266 return err(1, "stdout"); 267 return rc; 268 } 269 270 static int 238 271 raw_cat(int rfd) 239 272 { … … 247 280 if (buf == NULL) { 248 281 if (fstat(wfd, &sbuf)) 249 err(1, "%s", filename); 282 return err(1, "%s", filename); 283 #ifdef _MSC_VER 284 bsize = 1024; 285 #else 250 286 bsize = MAX(sbuf.st_blksize, 1024); 287 #endif 251 288 if ((buf = malloc(bsize)) == NULL) 252 err(1, "buffer");289 return err(1, "buffer"); 253 290 } 254 291 while ((nr = read(rfd, buf, bsize)) > 0) 255 292 for (off = 0; nr; nr -= nw, off += nw) 256 293 if ((nw = write(wfd, buf + off, (size_t)nr)) < 0) 257 err(1, "stdout");294 return err(1, "stdout"); 258 295 if (nr < 0) { 259 296 warn("%s", filename); 260 rval = 1; 261 } 297 return 1; 298 } 299 return 0; 262 300 } 263 301 -
trunk/src/gmake/kmkbuiltin/mkdir.c
r601 r611 79 79 mode = NULL; 80 80 81 82 83 84 85 86 87 88 81 /* reinitialize globals */ 82 vflag = 0; 83 84 /* kmk: reset getopt and set progname */ 85 g_progname = argv[0]; 86 opterr = 1; 87 optarg = NULL; 88 optopt = 0; 89 89 #if defined(__FreeBSD__) || defined(__EMX__) || defined(__APPLE__) 90 91 90 optreset = 1; 91 optind = 1; 92 92 #else 93 93 optind = 0; /* init */ 94 94 #endif 95 95 while ((ch = getopt(argc, argv, "m:pv")) != -1) -
trunk/src/gmake/variable.c
r601 r611 1062 1062 #ifdef CONFIG_WITH_KMK_BUILTIN 1063 1063 /* The supported kMk Builtin commands. */ 1064 (void) define_variable ("KMK_BUILTIN", 11, "append cp echo install ln mkdir rm rmdir", o_default, 0);1064 (void) define_variable ("KMK_BUILTIN", 11, "append cp cat echo install ln mkdir rm rmdir", o_default, 0); 1065 1065 #endif 1066 1066
Note:
See TracChangeset
for help on using the changeset viewer.