diff -r a4180acaa5a8 wrap.c --- a/wrap.c Mon Aug 09 12:32:56 2010 +0100 +++ b/wrap.c Mon Aug 09 12:34:01 2010 +0100 @@ -38,8 +38,15 @@ if(*argv[1] != 'r') break; case 'c': - for(i = 2; i < argc; i++) - append(argv[i]); + if(argc > 2) + for(i = 2; i < argc; i++) + append(argv[i]); + else + while(fgets(buf, sizeof buf, stdin)) { + if(buf[strlen(buf)-1] == '\n') + buf[strlen(buf)-1] = '\0'; + append(buf); + } break; case 't': while(fread(&ent, sizeof ent, 1, stdin)) { @@ -64,6 +71,10 @@ struct stat st; FILE *fp; + if(strlen(path) > sizeof ent.path - 1) { + errno = ENAMETOOLONG; + fatal(path); + } if(stat(path, &st) < 0) fatal(path); if(!(fp = fopen(path, "r")))