]> git.tuebingen.mpg.de Git - paraslash.git/commitdiff
move s_a_r() and s_a_r_list() from string.c to mysql_selector.c
authorAndre Noll <maan@systemlinux.org>
Thu, 1 Feb 2007 20:03:03 +0000 (21:03 +0100)
committerAndre Noll <maan@systemlinux.org>
Thu, 1 Feb 2007 20:03:03 +0000 (21:03 +0100)
And make them static as they are only used in mysql_selector.c.

This reduces the stripped code size of all executables (except
para_server of course) by about 1K.

mysql_selector.c
string.c
string.h

index 0eb19bc58da2f7d78681a793efb746cc0b14bc00..f8885f9a0f50ea0dd185e4cbecbc3a0ab17d1d0e 100644 (file)
@@ -28,6 +28,7 @@
 #include "db.h"
 #include <mysql/mysql.h>
 #include <mysql/mysql_version.h>
+#include <regex.h>
 #include "error.h"
 #include "net.h"
 #include "string.h"
@@ -39,6 +40,18 @@ extern struct misc_meta_data *mmd;
 
 static void *mysql_ptr = NULL;
 
+/**
+ * contains name/replacement pairs used by s_a_r_list()
+ *
+ * \sa s_a_r()
+ */
+struct para_macro {
+       /** the name of the macro */
+       const char *name;
+       /** the replacement text */
+       const char *replacement;
+};
+
 static struct para_macro macro_list[] = {
        {       .name = "IS_N_SET",
                .replacement = "(data.%s != '1')"
@@ -63,6 +76,93 @@ static struct para_macro macro_list[] = {
        }
 };
 
+/**
+ * simple search and replace routine
+ *
+ * \param src source string
+ * \param macro_name the name of the macro
+ * \param replacement the replacement format string
+ *
+ * In \p src, replace each occurence of \p macro_name(arg) by the string
+ * determined by the \p replacement format string. \p replacement may (but
+ * needs not) contain a single string conversion specifier (%s) which gets
+ * replaced by \p arg.
+ *
+ * \return A string in which all matches in \p src are replaced, or \p NULL if
+ * an syntax error was encountered. Caller must free the result.
+ *
+ * \sa regcomp(3)
+ */
+__must_check __malloc static char *s_a_r(const char *src, const char* macro_name,
+               const char *replacement)
+{
+       regex_t preg;
+       size_t  nmatch = 1;
+       regmatch_t pmatch[1];
+       int eflags = 0;
+       char *dest = NULL;
+       const char *bufptr = src;
+
+       if (!macro_name || !replacement || !src)
+               return para_strdup(src);
+       regcomp(&preg, macro_name, 0);
+       while (regexec(&preg,  bufptr, nmatch, pmatch, eflags)
+                       != REG_NOMATCH) {
+               char *tmp, *arg, *o_bracket, *c_bracket;
+
+               o_bracket = strchr(bufptr + pmatch[0].rm_so, '(');
+               c_bracket = o_bracket? strchr(o_bracket, ')') : NULL;
+               if (!c_bracket)
+                       goto out;
+               tmp = para_strdup(bufptr);
+               tmp[pmatch[0].rm_so] = '\0';
+               dest = para_strcat(dest, tmp);
+               free(tmp);
+
+               arg = para_strdup(o_bracket + 1);
+               arg[c_bracket - o_bracket - 1] = '\0';
+               tmp = make_message(replacement, arg);
+               free(arg);
+               dest = para_strcat(dest, tmp);
+               free(tmp);
+               bufptr = c_bracket;
+               bufptr++;
+       }
+       dest = para_strcat(dest, bufptr);
+//     PARA_DEBUG_LOG("%s: returning %s\n", __func__, dest);
+out:
+       regfree(&preg);
+       return dest;
+}
+
+/**
+ * replace a string according to a list of macros
+ *
+ * \param macro_list the array containing a macro/replacement pairs.
+ * \param src the source string
+ *
+ * This function just calls s_a_r() for each element of \p macro_list.
+ *
+ * \return \p NULL if one of the underlying calls to \p s_a_r returned \p NULL.
+ * Otherwise the completely expanded version of \p src is returned.
+ */
+__must_check __malloc static char *s_a_r_list(struct para_macro *macro_list, char *src)
+{
+       struct para_macro *mp = macro_list;
+       char *ret = NULL, *tmp = para_strdup(src);
+
+       while (mp->name) {
+               ret = s_a_r(tmp, mp->name, mp->replacement);
+               free(tmp);
+               if (!ret) /* syntax error */
+                       return NULL;
+               tmp = ret;
+               mp++;
+       }
+       //PARA_DEBUG_LOG("%s: returning %s\n", __func__, dest);
+       return ret;
+}
+
 static int real_query(const char *query)
 {
        if (!mysql_ptr)
index 52c5183b418e772ee5a603eddb4290755769919e..47c5417df576a56c1d710137c02182a3b7600fa5 100644 (file)
--- a/string.c
+++ b/string.c
@@ -22,7 +22,6 @@
 #include "string.h"
 
 #include <sys/time.h> /* gettimeofday */
-#include <regex.h>
 #include <pwd.h>
 #include <sys/utsname.h> /* uname() */
 #include <string.h>
@@ -223,93 +222,6 @@ __must_check __malloc char *para_basename(const char *name)
        return para_strdup(p);
 }
 
-/**
- * simple search and replace routine
- *
- * \param src source string
- * \param macro_name the name of the macro
- * \param replacement the replacement format string
- *
- * In \p src, replace each occurence of \p macro_name(arg) by the string
- * determined by the \p replacement format string. \p replacement may (but
- * needs not) contain a single string conversion specifier (%s) which gets
- * replaced by \p arg.
- *
- * \return A string in which all matches in \p src are replaced, or \p NULL if
- * an syntax error was encountered. Caller must free the result.
- *
- * \sa regcomp(3)
- */
-__must_check __malloc char *s_a_r(const char *src, const char* macro_name,
-               const char *replacement)
-{
-       regex_t preg;
-       size_t  nmatch = 1;
-       regmatch_t pmatch[1];
-       int eflags = 0;
-       char *dest = NULL;
-       const char *bufptr = src;
-
-       if (!macro_name || !replacement || !src)
-               return para_strdup(src);
-       regcomp(&preg, macro_name, 0);
-       while (regexec(&preg,  bufptr, nmatch, pmatch, eflags)
-                       != REG_NOMATCH) {
-               char *tmp, *arg, *o_bracket, *c_bracket;
-
-               o_bracket = strchr(bufptr + pmatch[0].rm_so, '(');
-               c_bracket = o_bracket? strchr(o_bracket, ')') : NULL;
-               if (!c_bracket)
-                       goto out;
-               tmp = para_strdup(bufptr);
-               tmp[pmatch[0].rm_so] = '\0';
-               dest = para_strcat(dest, tmp);
-               free(tmp);
-
-               arg = para_strdup(o_bracket + 1);
-               arg[c_bracket - o_bracket - 1] = '\0';
-               tmp = make_message(replacement, arg);
-               free(arg);
-               dest = para_strcat(dest, tmp);
-               free(tmp);
-               bufptr = c_bracket;
-               bufptr++;
-       }
-       dest = para_strcat(dest, bufptr);
-//     PARA_DEBUG_LOG("%s: returning %s\n", __func__, dest);
-out:
-       regfree(&preg);
-       return dest;
-}
-
-/**
- * replace a string according to a list of macros
- *
- * \param macro_list the array containing a macro/replacement pairs.
- * \param src the source string
- *
- * This function just calls s_a_r() for each element of \p macro_list.
- *
- * \return \p NULL if one of the underlying calls to \p s_a_r returned \p NULL.
- * Otherwise the completely expanded version of \p src is returned.
- */
-__must_check __malloc char *s_a_r_list(struct para_macro *macro_list, char *src)
-{
-       struct para_macro *mp = macro_list;
-       char *ret = NULL, *tmp = para_strdup(src);
-
-       while (mp->name) {
-               ret = s_a_r(tmp, mp->name, mp->replacement);
-               free(tmp);
-               if (!ret) /* syntax error */
-                       return NULL;
-               tmp = ret;
-               mp++;
-       }
-       //PARA_DEBUG_LOG("%s: returning %s\n", __func__, dest);
-       return ret;
-}
-
 /**
  * cut trailing newline
  *
index e5033db2b91bd3ca4f0e4a6b27474f924f74343f..5a76c0495ea4b25d949bdd393caf060377622a71 100644 (file)
--- a/string.h
+++ b/string.h
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2006 Andre Noll <maan@systemlinux.org>
+ * Copyright (C) 2006-2007 Andre Noll <maan@systemlinux.org>
  *
  *     This program is free software; you can redistribute it and/or modify
  *     it under the terms of the GNU General Public License as published by
 
 /** \file string.h exported sybmols from string.c */
 
-/** contains name/replacement pairs used by s_a_r_list()
- *
- * \sa s_a_r()
- */
-struct para_macro {
-       /** the name of the macro */
-       const char *name;
-       /** the replacement text */
-       const char *replacement;
-};
 __must_check __malloc void *para_realloc(void *p, size_t size);
 __must_check __malloc void *para_malloc(size_t size);
 __must_check __malloc void *para_calloc(size_t size);
@@ -36,8 +26,6 @@ __must_check __malloc __printf_1_2 char *make_message(const char *fmt, ...);
 __must_check __malloc char *para_strcat(char *a, const char *b);
 __must_check __malloc char *para_dirname(const char *name);
 __must_check __malloc char *para_basename(const char *name);
-__must_check __malloc char *s_a_r(const char *src, const char* regex, const char *replacement);
-__must_check __malloc char *s_a_r_list(struct para_macro *pm, char *src);
 void chop(char* buf);
 __must_check __malloc char *para_tmpname(void);
 __must_check int para_mkstemp(char *template, mode_t mode);