static void output_exclude(const char *path, struct exclude *exclude) { char *bang = exclude->flags & EXC_FLAG_NEGATIVE ? "!" : ""; char *slash = exclude->flags & EXC_FLAG_MUSTBEDIR ? "/" : ""; if (!null_term_line) { if (!verbose) { write_name_quoted(path, stdout, '\n'); } else { quote_c_style(exclude->el->src, NULL, stdout, 0); printf(":%d:%s%s%s\t", exclude->srcpos, bang, exclude->pattern, slash); quote_c_style(path, NULL, stdout, 0); fputc('\n', stdout); } } else { if (!verbose) { printf("%s%c", path, '\0'); } else { printf("%s%c%d%c%s%s%s%c%s%c", exclude->el->src, '\0', exclude->srcpos, '\0', bang, exclude->pattern, slash, '\0', path, '\0'); } } }
static void print_path(const char *path) { int need_quote = quote_c_style(path, NULL, NULL, 0); if (need_quote) quote_c_style(path, NULL, stdout, 0); else printf("%s", path); }
static void print_path_1(const char *path) { int need_quote = quote_c_style(path, NULL, NULL, 0); if (need_quote) quote_c_style(path, NULL, stdout, 0); else if (strchr(path, ' ')) printf("\"%s\"", path); else printf("%s", path); }
static char *quote_one(const char *str) { int needlen; char *xp; if (!str) return NULL; needlen = quote_c_style(str, NULL, NULL, 0); if (!needlen) return strdup(str); xp = xmalloc(needlen + 1); quote_c_style(str, xp, NULL, 0); return xp; }
void quote_two_c_style(struct strbuf *sb, const char *prefix, const char *path, int nodq) { if (quote_c_style(prefix, NULL, NULL, 0) || quote_c_style(path, NULL, NULL, 0)) { if (!nodq) strbuf_addch(sb, '"'); quote_c_style(prefix, sb, NULL, 1); quote_c_style(path, sb, NULL, 1); if (!nodq) strbuf_addch(sb, '"'); } else { strbuf_addstr(sb, prefix); strbuf_addstr(sb, path); } }
void fast_export_delete(const char *path) { putchar('D'); putchar(' '); quote_c_style(path, NULL, stdout, 0); putchar('\n'); }
static void output_attr(int cnt, struct git_attr_check *check, const char *file) { int j; for (j = 0; j < cnt; j++) { const char *value = check[j].value; if (ATTR_TRUE(value)) value = "set"; else if (ATTR_FALSE(value)) value = "unset"; else if (ATTR_UNSET(value)) value = "unspecified"; if (nul_term_line) { printf("%s%c" /* path */ "%s%c" /* attrname */ "%s%c" /* attrvalue */, file, 0, git_attr_name(check[j].attr), 0, value, 0); } else { quote_c_style(file, NULL, stdout, 0); printf(": %s: %s\n", git_attr_name(check[j].attr), value); } } }
static int print_alternate(struct alternate_object_database *alt, void *data) { printf("alternate: "); quote_c_style(alt->path, NULL, stdout, 0); putchar('\n'); return 0; }
static void ls_from_rev(uint32_t rev, const char *path) { /* ls :5 path/to/old/file */ printf("ls :%"PRIu32" ", rev); quote_c_style(path, NULL, stdout, 0); putchar('\n'); fflush(stdout); }
static void ls_from_active_commit(const char *path) { /* ls "path/to/file" */ printf("ls \""); quote_c_style(path, NULL, stdout, 1); printf("\"\n"); fflush(stdout); }
void write_name_quoted(const char *name, FILE *fp, int terminator) { if (terminator) { quote_c_style(name, NULL, fp, 0); } else { fputs(name, fp); } fputc(terminator, fp); }
void fast_export_modify(const char *path, uint32_t mode, const char *dataref) { /* Mode must be 100644, 100755, 120000, or 160000. */ if (!dataref) { fast_export_truncate(path, mode); return; } printf("M %06"PRIo32" %s ", mode, dataref); quote_c_style(path, NULL, stdout, 0); putchar('\n'); }
static int set_helper_option(struct transport *transport, const char *name, const char *value) { struct helper_data *data = transport->data; struct child_process *helper = get_helper(transport); struct strbuf buf = STRBUF_INIT; int i, ret, is_bool = 0; if (!data->option) return 1; for (i = 0; i < ARRAY_SIZE(unsupported_options); i++) { if (!strcmp(name, unsupported_options[i])) return 1; } for (i = 0; i < ARRAY_SIZE(boolean_options); i++) { if (!strcmp(name, boolean_options[i])) { is_bool = 1; break; } } strbuf_addf(&buf, "option %s ", name); if (is_bool) strbuf_addstr(&buf, value ? "true" : "false"); else quote_c_style(value, &buf, NULL, 0); strbuf_addch(&buf, '\n'); if (write_in_full(helper->in, buf.buf, buf.len) != buf.len) die_errno("cannot send option to %s", data->name); strbuf_reset(&buf); if (strbuf_getline(&buf, data->out, '\n') == EOF) exit(128); /* child died, message supplied already */ if (!strcmp(buf.buf, "ok")) ret = 0; else if (!prefixcmp(buf.buf, "error")) { ret = -1; } else if (!strcmp(buf.buf, "unsupported")) ret = 1; else { warning("%s unexpectedly said: '%s'", data->name, buf.buf); ret = 1; } strbuf_release(&buf); return ret; }
static char *quote_two(const char *one, const char *two) { int need_one = quote_c_style(one, NULL, NULL, 1); int need_two = quote_c_style(two, NULL, NULL, 1); char *xp; if (need_one + need_two) { if (!need_one) need_one = strlen(one); if (!need_two) need_one = strlen(two); xp = xmalloc(need_one + need_two + 3); xp[0] = '"'; quote_c_style(one, xp + 1, NULL, 1); quote_c_style(two, xp + need_one + 1, NULL, 1); strcpy(xp + need_one + need_two + 1, "\""); return xp; } need_one = strlen(one); need_two = strlen(two); xp = xmalloc(need_one + need_two + 1); strcpy(xp, one); strcpy(xp + need_one, two); return xp; }
static int set_helper_option(struct transport *transport, const char *name, const char *value) { struct helper_data *data = transport->data; struct strbuf buf = STRBUF_INIT; int i, ret, is_bool = 0; get_helper(transport); if (!data->option) return 1; for (i = 0; i < ARRAY_SIZE(unsupported_options); i++) { if (!strcmp(name, unsupported_options[i])) return 1; } for (i = 0; i < ARRAY_SIZE(boolean_options); i++) { if (!strcmp(name, boolean_options[i])) { is_bool = 1; break; } } strbuf_addf(&buf, "option %s ", name); if (is_bool) strbuf_addstr(&buf, value ? "true" : "false"); else quote_c_style(value, &buf, NULL, 0); strbuf_addch(&buf, '\n'); xchgline(data, &buf); if (!strcmp(buf.buf, "ok")) ret = 0; else if (!prefixcmp(buf.buf, "error")) { ret = -1; } else if (!strcmp(buf.buf, "unsupported")) ret = 1; else { warning("%s unexpectedly said: '%s'", data->name, buf.buf); ret = 1; } strbuf_release(&buf); return ret; }
static void output_attr(int cnt, struct git_attr_check *check, const char *file) { int j; for (j = 0; j < cnt; j++) { const char *value = check[j].value; if (ATTR_TRUE(value)) value = "set"; else if (ATTR_FALSE(value)) value = "unset"; else if (ATTR_UNSET(value)) value = "unspecified"; quote_c_style(file, NULL, stdout, 0); printf(": %s: %s\n", git_attr_name(check[j].attr), value); } }
void write_name_quotedpfx(const char *pfx, size_t pfxlen, const char *name, FILE *fp, int terminator) { int needquote = 0; if (terminator) { needquote = next_quote_pos(pfx, pfxlen) < pfxlen || name[next_quote_pos(name, -1)]; } if (needquote) { fputc('"', fp); quote_c_style_counted(pfx, pfxlen, NULL, fp, 1); quote_c_style(name, NULL, fp, 1); fputc('"', fp); } else { fwrite(pfx, pfxlen, 1, fp); fputs(name, fp); } fputc(terminator, fp); }
static void check_attr(int cnt, struct git_attr_check *check, const char** name, const char *file) { int j; if (git_checkattr(file, cnt, check)) die("git_checkattr died"); for (j = 0; j < cnt; j++) { const char *value = check[j].value; if (ATTR_TRUE(value)) value = "set"; else if (ATTR_FALSE(value)) value = "unset"; else if (ATTR_UNSET(value)) value = "unspecified"; quote_c_style(file, NULL, stdout, 0); printf(": %s: %s\n", name[j], value); } }