diff options
| author | Bryce Kwon <bryce@brycekwon.com> | |
|---|---|---|
| committer | Bryce Kwon <bryce@brycekwon.com> | |
| commit | ||
| parent | ||
| tree | ||
| download | ||
Settle the names, types and layout of the sources
Diffstat (limited to 'source/shared.c')
| -rw-r--r-- | source/shared.c | 70 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 file changed, 36 insertions, 34 deletions
diff --git a/source/shared.c b/source/shared.c index 058d938..259802a 100644 --- a/source/shared.c +++ b/source/shared.c @@ -10,24 +10,31 @@ #include "cgit.h" +/* Longest result cgit_expand_macros can return. */ +#define MACRO_EXPANSION_BUFSIZE (1024 * 8) + +/* Partial line carried between xdiff callbacks, see filediff_cb. */ +static char *diffbuf; +static int diffbuf_len; + struct cgit_repolist cgit_repolist; struct cgit_context ctx; -int chk_zero(int result, char *msg) +int cgit_die_unless_zero(int result, const char *msg) { if (result != 0) die_errno("%s", msg); return result; } -int chk_positive(int result, char *msg) +int cgit_die_unless_positive(int result, const char *msg) { if (result <= 0) die_errno("%s", msg); return result; } -int chk_non_negative(int result, char *msg) +int cgit_die_unless_non_negative(int result, const char *msg) { if (result < 0) die_errno("%s", msg); @@ -51,7 +58,7 @@ struct cgit_repo *cgit_add_repo(const char *url) ret = &cgit_repolist.repos[cgit_repolist.count-1]; memset(ret, 0, sizeof(struct cgit_repo)); - ret->url = trim_end(url, '/'); + ret->url = cgit_trim_end(url, '/'); if (ret->url) *strchrnul(ret->url, '\n') = '\0'; ret->name = ret->url; @@ -114,7 +121,7 @@ void cgit_free_commitinfo(struct commitinfo *info) free(info); } -char *trim_end(const char *str, char c) +char *cgit_trim_end(const char *str, char c) { int len; @@ -128,7 +135,7 @@ char *trim_end(const char *str, char c) return xstrndup(str, len); } -char *ensure_end(const char *str, char c) +char *cgit_ensure_end(const char *str, char c) { size_t len = strlen(str); char *result; @@ -265,9 +272,6 @@ static int load_mmfile(mmfile_t *file, const struct object_id *oid) * ripped from git and modified to use globals instead of * a special callback-struct. */ -static char *diffbuf = NULL; -static int buflen = 0; - static int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf) { int i; @@ -275,9 +279,9 @@ static int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf) for (i = 0; i < nbuf; i++) { if (mb[i].ptr[mb[i].size-1] != '\n') { /* Incomplete line */ - diffbuf = xrealloc(diffbuf, buflen + mb[i].size); - memcpy(diffbuf + buflen, mb[i].ptr, mb[i].size); - buflen += mb[i].size; + diffbuf = xrealloc(diffbuf, diffbuf_len + mb[i].size); + memcpy(diffbuf + diffbuf_len, mb[i].ptr, mb[i].size); + diffbuf_len += mb[i].size; continue; } @@ -286,18 +290,18 @@ static int filediff_cb(void *priv, mmbuffer_t *mb, int nbuf) ((linediff_fn)priv)(mb[i].ptr, mb[i].size); continue; } - diffbuf = xrealloc(diffbuf, buflen + mb[i].size); - memcpy(diffbuf + buflen, mb[i].ptr, mb[i].size); - ((linediff_fn)priv)(diffbuf, buflen + mb[i].size); + diffbuf = xrealloc(diffbuf, diffbuf_len + mb[i].size); + memcpy(diffbuf + diffbuf_len, mb[i].ptr, mb[i].size); + ((linediff_fn)priv)(diffbuf, diffbuf_len + mb[i].size); free(diffbuf); diffbuf = NULL; - buflen = 0; + diffbuf_len = 0; } if (diffbuf) { - ((linediff_fn)priv)(diffbuf, buflen); + ((linediff_fn)priv)(diffbuf, diffbuf_len); free(diffbuf); diffbuf = NULL; - buflen = 0; + diffbuf_len = 0; } return 0; } @@ -473,8 +477,8 @@ void cgit_parse_date_format(const char *format, struct date_mode *mode) } typedef struct { - char * name; - char * value; + const char *name; + const char *value; } cgit_env_var; void cgit_prepare_repo_env(struct cgit_repo * repo) @@ -490,7 +494,7 @@ void cgit_prepare_repo_env(struct cgit_repo * repo) }; int env_var_count = ARRAY_SIZE(env_vars); cgit_env_var *p, *q; - static char *warn = "cgit warning: failed to set env: %s=%s\n"; + static const char *warn = "cgit warning: failed to set env: %s=%s\n"; p = env_vars; q = p + env_var_count; @@ -503,7 +507,7 @@ void cgit_prepare_repo_env(struct cgit_repo * repo) * zeroterminate the buffer, truncate at a new line, and return 0 on success, * errno otherwise. */ -int read_first_line(const char *path, char **buf, size_t *size) +int cgit_read_first_line(const char *path, char **buf, size_t *size) { int fd, e; ssize_t got; @@ -538,7 +542,7 @@ int read_first_line(const char *path, char **buf, size_t *size) return (*size == (size_t)st.st_size ? 0 : e); } -char *strdup_first_line(const char *txt) +char *cgit_strdup_first_line(const char *txt) { char *t = xstrdup(txt); *strchrnul(t, '\n') = '\0'; @@ -552,7 +556,7 @@ static int is_token_char(char c) /* Replace name with getenv(name), return pointer to zero-terminating char */ -static char *expand_macro(char *name, int maxlength) +static char *expand_macro(char *name, size_t maxlength) { char *value; size_t len; @@ -569,28 +573,26 @@ static char *expand_macro(char *name, int maxlength) return name + len; } -#define EXPBUFSIZE (1024 * 8) - /* Replace all tokens prefixed by '$' in the specified text with the * value of the named environment variable. * NB: the return value is a static buffer, i.e. it must be strdup'd * by the caller. */ -char *expand_macros(const char *txt) +char *cgit_expand_macros(const char *txt) { - static char result[EXPBUFSIZE]; + static char result[MACRO_EXPANSION_BUFSIZE]; char *p, *start; - int len; + size_t len; p = result; start = NULL; - while (p < result + EXPBUFSIZE - 1 && txt && *txt) { + while (p < result + MACRO_EXPANSION_BUFSIZE - 1 && txt && *txt) { *p = *txt; if (start) { if (!is_token_char(*txt)) { if (p - start > 0) { *p = '\0'; - len = result + EXPBUFSIZE - start - 1; + len = result + MACRO_EXPANSION_BUFSIZE - start - 1; p = expand_macro(start, len) - 1; } start = NULL; @@ -610,19 +612,19 @@ char *expand_macros(const char *txt) } *p = '\0'; if (start && p - start > 0) { - len = result + EXPBUFSIZE - start - 1; + len = result + MACRO_EXPANSION_BUFSIZE - start - 1; p = expand_macro(start, len); *p = '\0'; } return result; } -char *get_mimetype_for_filename(const char *filename) +char *cgit_get_mimetype_for_filename(const char *filename) { const char *ext; char *mimetype, line[1024]; struct string_list list = STRING_LIST_INIT_NODUP; - int i; + size_t i; FILE *file; struct string_list_item *mime; |
