From: Willy Tarreau Date: Sun, 15 Oct 2006 13:17:57 +0000 (+0200) Subject: [CLEANUP] add a few "const char *" where appropriate X-Git-Tag: v1.3.3~12 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b17916e89b2946f2ab71675a31d55fe8a9e40782;p=thirdparty%2Fhaproxy.git [CLEANUP] add a few "const char *" where appropriate As suggested by Markus Elfring, a few "const char *" have replaced some "char *" declarations where a function is not expected to modify a value. It does not change the code but it helps detecting coding errors. --- diff --git a/include/common/cfgparse.h b/include/common/cfgparse.h index 591f172391..e21c4c5fd4 100644 --- a/include/common/cfgparse.h +++ b/include/common/cfgparse.h @@ -32,9 +32,9 @@ extern int cfg_maxpconn; extern int cfg_maxconn; -int cfg_parse_global(char *file, int linenum, char **args); -int cfg_parse_listen(char *file, int linenum, char **args); -int readcfgfile(char *file); +int cfg_parse_global(const char *file, int linenum, char **args); +int cfg_parse_listen(const char *file, int linenum, char **args); +int readcfgfile(const char *file); #endif /* _COMMON_CFGPARSE_H */ diff --git a/include/common/regex.h b/include/common/regex.h index 05eae6b095..bf51a0dcd7 100644 --- a/include/common/regex.h +++ b/include/common/regex.h @@ -41,16 +41,17 @@ struct hdr_exp { struct hdr_exp *next; - regex_t *preg; /* expression to look for */ + const regex_t *preg; /* expression to look for */ int action; /* ACT_ALLOW, ACT_REPLACE, ACT_REMOVE, ACT_DENY */ - char *replace; /* expression to set instead */ + const char *replace; /* expression to set instead */ }; extern regmatch_t pmatch[MAX_MATCH]; -int exp_replace(char *dst, char *src, char *str, regmatch_t *matches); -char *check_replace_string(char *str); -char *chain_regex(struct hdr_exp **head, regex_t *preg, int action, char *replace); +int exp_replace(char *dst, char *src, const char *str, const regmatch_t *matches); +const char *check_replace_string(const char *str); +const char *chain_regex(struct hdr_exp **head, const regex_t *preg, + int action, const char *replace); #endif /* _COMMON_REGEX_H */ diff --git a/include/common/time.h b/include/common/time.h index 7661aac03d..7a68a15497 100644 --- a/include/common/time.h +++ b/include/common/time.h @@ -39,31 +39,31 @@ extern struct timeval start_date; /* the process's start date */ /* * adds ms to , set the result to and returns a pointer */ -struct timeval *tv_delayfrom(struct timeval *tv, struct timeval *from, int ms); +struct timeval *tv_delayfrom(struct timeval *tv, const struct timeval *from, int ms); /* * compares and modulo 1ms: returns 0 if equal, -1 if tv1 < tv2, 1 if tv1 > tv2 * Must not be used when either argument is eternity. Use tv_cmp2_ms() for that. */ -int tv_cmp_ms(struct timeval *tv1, struct timeval *tv2); +int tv_cmp_ms(const struct timeval *tv1, const struct timeval *tv2); /* * compares and : returns 0 if equal, -1 if tv1 < tv2, 1 if tv1 > tv2, * considering that 0 is the eternity. */ -int tv_cmp2(struct timeval *tv1, struct timeval *tv2); +int tv_cmp2(const struct timeval *tv1, const struct timeval *tv2); /* * compares and modulo 1 ms: returns 0 if equal, -1 if tv1 < tv2, 1 if tv1 > tv2, * considering that 0 is the eternity. */ -int tv_cmp2_ms(struct timeval *tv1, struct timeval *tv2); +int tv_cmp2_ms(const struct timeval *tv1, const struct timeval *tv2); /* * returns the remaining time between tv1=now and event=tv2 * if tv2 is passed, 0 is returned. * Returns TIME_ETERNITY if tv2 is eternity. */ -unsigned long tv_remain2(struct timeval *tv1, struct timeval *tv2); +unsigned long tv_remain2(const struct timeval *tv1, const struct timeval *tv2); /* sets to the current time */ @@ -78,7 +78,7 @@ static inline struct timeval *tv_now(struct timeval *tv) * compares and : returns 0 if equal, -1 if tv1 < tv2, 1 if tv1 > tv2 * Must not be used when either argument is eternity. Use tv_cmp2() for that. */ -static inline int tv_cmp(struct timeval *tv1, struct timeval *tv2) +static inline int tv_cmp(const struct timeval *tv1, const struct timeval *tv2) { if (tv1->tv_sec < tv2->tv_sec) return -1; @@ -96,7 +96,7 @@ static inline int tv_cmp(struct timeval *tv1, struct timeval *tv2) * returns the difference, in ms, between tv1 and tv2 * Must not be used when either argument is eternity. */ -static inline unsigned long tv_diff(struct timeval *tv1, struct timeval *tv2) +static inline unsigned long tv_diff(const struct timeval *tv1, const struct timeval *tv2) { unsigned long ret; @@ -113,7 +113,7 @@ static inline unsigned long tv_diff(struct timeval *tv1, struct timeval *tv2) * if tv2 is passed, 0 is returned. * Must not be used when either argument is eternity. */ -static inline unsigned long tv_remain(struct timeval *tv1, struct timeval *tv2) +static inline unsigned long tv_remain(const struct timeval *tv1, const struct timeval *tv2) { unsigned long ret; @@ -142,7 +142,7 @@ static inline struct timeval *tv_eternity(struct timeval *tv) /* * returns 1 if tv is null, else 0 */ -static inline int tv_iseternity(struct timeval *tv) +static inline int tv_iseternity(const struct timeval *tv) { if (tv->tv_sec == 0 && tv->tv_usec == 0) return 1; @@ -154,8 +154,9 @@ static inline int tv_iseternity(struct timeval *tv) * returns the first event between tv1 and tv2 into tvmin. * a zero tv is ignored. tvmin is returned. */ -static inline struct timeval *tv_min(struct timeval *tvmin, - struct timeval *tv1, struct timeval *tv2) +static inline const struct timeval *tv_min(struct timeval *tvmin, + const struct timeval *tv1, + const struct timeval *tv2) { if (tv_cmp2(tv1, tv2) <= 0) diff --git a/include/proto/backend.h b/include/proto/backend.h index cc25a6fe16..b4c641e65e 100644 --- a/include/proto/backend.h +++ b/include/proto/backend.h @@ -97,7 +97,8 @@ static inline struct server *get_server_rr(struct proxy *px) * If any server is found, it will be returned. If no valid server is found, * NULL is returned. */ -static inline struct server *get_server_sh(struct proxy *px, char *addr, int len) +static inline struct server *get_server_sh(const struct proxy *px, + const char *addr, int len) { unsigned int h, l; diff --git a/include/proto/buffers.h b/include/proto/buffers.h index 6dbc9569ad..a5ad2081e4 100644 --- a/include/proto/buffers.h +++ b/include/proto/buffers.h @@ -36,13 +36,13 @@ static inline void buffer_init(struct buffer *buf) } /* returns 1 if the buffer is empty, 0 otherwise */ -static inline int buffer_isempty(struct buffer *buf) +static inline int buffer_isempty(const struct buffer *buf) { return buf->l == 0; } /* returns 1 if the buffer is full, 0 otherwise */ -static inline int buffer_isfull(struct buffer *buf) { +static inline int buffer_isfull(const struct buffer *buf) { return buf->l == BUFSIZE; } @@ -55,7 +55,7 @@ static inline void buffer_flush(struct buffer *buf) /* returns the maximum number of bytes writable at once in this buffer */ -static inline int buffer_max(struct buffer *buf) +static inline int buffer_max(const struct buffer *buf) { if (buf->l == BUFSIZE) return 0; diff --git a/include/proto/proto_http.h b/include/proto/proto_http.h index 205b0eebbe..0005bf78cc 100644 --- a/include/proto/proto_http.h +++ b/include/proto/proto_http.h @@ -36,7 +36,7 @@ int process_srv(struct session *t); void client_retnclose(struct session *s, int len, const char *msg); void client_return(struct session *s, int len, const char *msg); void srv_close_with_err(struct session *t, int err, int finst, - int status, int msglen, char *msg); + int status, int msglen, const char *msg); int produce_content(struct session *s); diff --git a/include/proto/queue.h b/include/proto/queue.h index 6732ba9090..c113f0352f 100644 --- a/include/proto/queue.h +++ b/include/proto/queue.h @@ -36,14 +36,14 @@ struct session *pendconn_get_next_sess(struct server *srv, struct proxy *px); struct pendconn *pendconn_add(struct session *sess); void pendconn_free(struct pendconn *p); int process_srv_queue(struct task *t); -unsigned int srv_dynamic_maxconn(struct server *s); +unsigned int srv_dynamic_maxconn(const struct server *s); /* Returns the first pending connection for server , which may be NULL if * nothing is pending. */ -static inline struct pendconn *pendconn_from_srv(struct server *s) { +static inline struct pendconn *pendconn_from_srv(const struct server *s) { if (!s->nbpend) return NULL; @@ -53,7 +53,7 @@ static inline struct pendconn *pendconn_from_srv(struct server *s) { /* Returns the first pending connection for proxy , which may be NULL if * nothing is pending. */ -static inline struct pendconn *pendconn_from_px(struct proxy *px) { +static inline struct pendconn *pendconn_from_px(const struct proxy *px) { if (!px->nbpend) return NULL; @@ -63,7 +63,7 @@ static inline struct pendconn *pendconn_from_px(struct proxy *px) { /* returns 0 if nothing has to be done for server regarding queued connections, * and non-zero otherwise. Suited for and if/else usage. */ -static inline int may_dequeue_tasks(struct server *s, struct proxy *p) { +static inline int may_dequeue_tasks(const struct server *s, const struct proxy *p) { return (s && (s->nbpend || p->nbpend) && (!s->maxconn || s->cur_sess < srv_dynamic_maxconn(s)) && s->queue_mgt); diff --git a/src/cfgparse.c b/src/cfgparse.c index 882c0e4671..034a2f11bf 100644 --- a/src/cfgparse.c +++ b/src/cfgparse.c @@ -251,7 +251,7 @@ static struct listener *str2listener(char *str, struct listener *tail) /* * parse a line in a section. Returns 0 if OK, -1 if error. */ -int cfg_parse_global(char *file, int linenum, char **args) +int cfg_parse_global(const char *file, int linenum, char **args) { if (!strcmp(args[0], "global")) { /* new section */ @@ -424,11 +424,11 @@ static void init_default_instance() /* * parse a line in a section. Returns 0 if OK, -1 if error. */ -int cfg_parse_listen(char *file, int linenum, char **args) +int cfg_parse_listen(const char *file, int linenum, char **args) { static struct proxy *curproxy = NULL; struct server *newsrv = NULL; - char *err; + const char *err; int rc; if (!strcmp(args[0], "listen")) { /* new proxy */ @@ -1776,7 +1776,7 @@ int cfg_parse_listen(char *file, int linenum, char **args) * This function reads and parses the configuration file given in the argument. * returns 0 if OK, -1 if error. */ -int readcfgfile(char *file) +int readcfgfile(const char *file) { char thisline[256]; char *line; diff --git a/src/log.c b/src/log.c index 237efa2f0a..e02a81f82d 100644 --- a/src/log.c +++ b/src/log.c @@ -64,7 +64,7 @@ void **pool_requri = NULL; * Displays the message on stderr with the date and pid. Overrides the quiet * mode during startup. */ -void Alert(char *fmt, ...) +void Alert(const char *fmt, ...) { va_list argp; struct timeval tv; @@ -87,7 +87,7 @@ void Alert(char *fmt, ...) /* * Displays the message on stderr with the date and pid. */ -void Warning(char *fmt, ...) +void Warning(const char *fmt, ...) { va_list argp; struct timeval tv; @@ -109,7 +109,7 @@ void Warning(char *fmt, ...) /* * Displays the message on only if quiet mode is not set. */ -void qfprintf(FILE *out, char *fmt, ...) +void qfprintf(FILE *out, const char *fmt, ...) { va_list argp; @@ -173,7 +173,7 @@ fd_set url_encode_map[(sizeof(fd_set) > (256/8)) ? 1 : ((256/8) / sizeof(fd_set) * It also tries not to waste too much time computing the message header. * It doesn't care about errors nor does it report them. */ -void send_log(struct proxy *p, int level, char *message, ...) +void send_log(struct proxy *p, int level, const char *message, ...) { static int logfd = -1; /* syslog UDP socket */ static long tvsec = -1; /* to force the string to be initialized */ diff --git a/src/proto_http.c b/src/proto_http.c index 0ba52a4dd4..f6a3ccd363 100644 --- a/src/proto_http.c +++ b/src/proto_http.c @@ -117,7 +117,7 @@ void client_return(struct session *s, int len, const char *msg) * returned. */ void srv_close_with_err(struct session *t, int err, int finst, - int status, int msglen, char *msg) + int status, int msglen, const char *msg) { t->srv_state = SV_STCLOSE; if (status > 0) { diff --git a/src/queue.c b/src/queue.c index 35285378f4..8b37da0405 100644 --- a/src/queue.c +++ b/src/queue.c @@ -26,7 +26,7 @@ void **pool_pendconn = NULL; /* returns the effective dynamic maxconn for a server, considering the minconn * and the proxy's usage relative to its saturation. */ -unsigned int srv_dynamic_maxconn(struct server *s) +unsigned int srv_dynamic_maxconn(const struct server *s) { return s->minconn ? ((s->maxconn * s->proxy->nbconn / s->proxy->maxconn) < s->minconn) ? s->minconn : diff --git a/src/regex.c b/src/regex.c index 7d6b30ddc4..ae7620068f 100644 --- a/src/regex.c +++ b/src/regex.c @@ -24,7 +24,7 @@ regmatch_t pmatch[MAX_MATCH]; /* rm_so, rm_eo for regular expressions */ -int exp_replace(char *dst, char *src, char *str, regmatch_t *matches) +int exp_replace(char *dst, char *src, const char *str, const regmatch_t *matches) { char *old_dst = dst; @@ -65,9 +65,9 @@ int exp_replace(char *dst, char *src, char *str, regmatch_t *matches) } /* returns NULL if the replacement string is valid, or the pointer to the first error */ -char *check_replace_string(char *str) +const char *check_replace_string(const char *str) { - char *err = NULL; + const char *err = NULL; while (*str) { if (*str == '\\') { err = str; /* in case of a backslash, we return the pointer to it */ @@ -97,12 +97,13 @@ char *check_replace_string(char *str) /* returns the pointer to an error in the replacement string, or NULL if OK */ -char *chain_regex(struct hdr_exp **head, regex_t *preg, int action, char *replace) +const char *chain_regex(struct hdr_exp **head, const regex_t *preg, + int action, const char *replace) { struct hdr_exp *exp; if (replace != NULL) { - char *err; + const char *err; err = check_replace_string(replace); if (err) return err; diff --git a/src/time.c b/src/time.c index 5abfcc4d29..025c87bb89 100644 --- a/src/time.c +++ b/src/time.c @@ -21,7 +21,7 @@ struct timeval start_date; /* the process's start date */ /* * adds ms to , set the result to and returns a pointer */ -struct timeval *tv_delayfrom(struct timeval *tv, struct timeval *from, int ms) +struct timeval *tv_delayfrom(struct timeval *tv, const struct timeval *from, int ms) { if (!tv || !from) return NULL; @@ -38,7 +38,7 @@ struct timeval *tv_delayfrom(struct timeval *tv, struct timeval *from, int ms) * compares and modulo 1ms: returns 0 if equal, -1 if tv1 < tv2, 1 if tv1 > tv2 * Must not be used when either argument is eternity. Use tv_cmp2_ms() for that. */ -int tv_cmp_ms(struct timeval *tv1, struct timeval *tv2) +int tv_cmp_ms(const struct timeval *tv1, const struct timeval *tv2) { if (tv1->tv_sec == tv2->tv_sec) { if (tv2->tv_usec >= tv1->tv_usec + 1000) @@ -62,7 +62,7 @@ int tv_cmp_ms(struct timeval *tv1, struct timeval *tv2) * compares and : returns 0 if equal, -1 if tv1 < tv2, 1 if tv1 > tv2, * considering that 0 is the eternity. */ -int tv_cmp2(struct timeval *tv1, struct timeval *tv2) +int tv_cmp2(const struct timeval *tv1, const struct timeval *tv2) { if (tv_iseternity(tv1)) if (tv_iseternity(tv2)) @@ -88,7 +88,7 @@ int tv_cmp2(struct timeval *tv1, struct timeval *tv2) * compares and modulo 1 ms: returns 0 if equal, -1 if tv1 < tv2, 1 if tv1 > tv2, * considering that 0 is the eternity. */ -int tv_cmp2_ms(struct timeval *tv1, struct timeval *tv2) +int tv_cmp2_ms(const struct timeval *tv1, const struct timeval *tv2) { if (tv_iseternity(tv1)) if (tv_iseternity(tv2)) @@ -121,7 +121,7 @@ int tv_cmp2_ms(struct timeval *tv1, struct timeval *tv2) * if tv2 is passed, 0 is returned. * Returns TIME_ETERNITY if tv2 is eternity. */ -unsigned long tv_remain2(struct timeval *tv1, struct timeval *tv2) +unsigned long tv_remain2(const struct timeval *tv1, const struct timeval *tv2) { unsigned long ret; @@ -144,7 +144,7 @@ unsigned long tv_remain2(struct timeval *tv1, struct timeval *tv2) * returns the absolute difference, in ms, between tv1 and tv2 * Must not be used when either argument is eternity. */ -unsigned long tv_delta(struct timeval *tv1, struct timeval *tv2) +unsigned long tv_delta(const struct timeval *tv1, const struct timeval *tv2) { int cmp; unsigned long ret; @@ -154,7 +154,7 @@ unsigned long tv_delta(struct timeval *tv1, struct timeval *tv2) if (!cmp) return 0; /* same dates, null diff */ else if (cmp < 0) { - struct timeval *tmp = tv1; + const struct timeval *tmp = tv1; tv1 = tv2; tv2 = tmp; }