return (string_t) { last, sh ? sh : calloc(0,0) };
}
-static string_t
-all_args(int argc, char ** argv) {
- char * all = NULL;
- size_t len = 0;
- if (argc > 2) {
- int i;
- len = (size_t) argc;
-
- for (i = 2; i < argc; ++i)
- { len += strlen(argv[i]); }
-
- all = malloc(len);
- if (all) {
- all[len - 1] = '\0';
- for (len = 0, i = 2; i < argc; ++i) {
- strcpy(all + len, argv[i]);
- len += strlen(argv[i]);
- len += (i + 1 < argc);
- if (i + 1 < argc) { all[len - 1] = ' '; }
- }
- }
- }
- return (string_t) { len, all ? all : calloc(0,0) };
-}
-
-#if 0
static string_t
all_args(int argc, char ** argv) {
string_t s = (string_t) { 0, NULL };
if (argc > 2) {
- size_t i;
- for (i = (size_t) argc; i > 2; --i) {
- s.len += strlen(argv[i]) + 1;
+ size_t i, len = 0;
+ for (i = 2; i < (size_t) argc; ++i) {
+ len += strlen(argv[i]);
}
- s.buf = malloc(s.len + (size_t) argc);
+ s.buf = malloc(len);
+ s.len = len;
if (s.buf) {
- size_t len;
- s.buf[s.len - 1] = '\0';
- for (len = 0, i = (size_t) argc; i > 2; --i) {
+ for (len = 0, i = 2; i < (size_t) argc; ++i) {
strcpy(s.buf + len, argv[i]);
- len += strlen(argv[i]) + 1;
- s.buf[len - 1] = ' ';
+ len += strlen(argv[i]);
+ if (i + 1 < argc) {
+ s.buf[len - 1] = ' ';
+ len++;
+ }
}
}
}
return s;
}
-#endif
/*** Map ***/
static int
run(char * buf) {
int ret = 127;
- fputs(GREEN "output" RESET ":\n", stderr);
+ fputs(BOLD GREEN "output" RESET ":\n", stderr);
pid_t pid = fork();
if (!pid) {
execl("/bin/sh", "sh", "-c", buf, NULL);
if (!s.buf) {
if (errno)
- { fprintf(stderr, BOLD RED "%s" RESET ": %s\n", g_filename.buf, strerror(errno)); }
+ { fprintf(stderr, BOLD RED "%s" RESET ": '" BOLD "%s" RESET "' %s\n", argv[0], g_filename.buf, strerror(errno)); }
else
- { fprintf(stderr, BOLD RED "%s" RESET ": File unrecognized.\n", g_filename.buf); }
+ { fprintf(stderr, BOLD RED "%s" RESET ": '" BOLD "%s" RESET "' File unrecognized.\n", argv[0], g_filename.buf); }
return 1;
}
free(g_short.buf); free(g_all.buf);
if (!s.buf) { return 1; }
- fprintf(stderr, GREEN "%s" RESET ": %s\n", argv[0], s.buf + strip(s));
+ fprintf(stderr, BOLD GREEN "%s" RESET ": %s\n", argv[0], s.buf + strip(s));
ret = ret ? 0 : run(s.buf);
if (ret)
- { fprintf(stderr, RED "result" RESET ": " BOLD "%d\n" RESET, ret); }
+ { fprintf(stderr, BOLD RED "result" RESET ": " BOLD "%d\n" RESET, ret); }
free(s.buf);
return ret;
fprintf(stderr, YELLOW "%s" RESET ": %s", argv[0], HELP DESC);
return 1;
}
-