Remove some globals
authorVolker Lendecke <vl@sernet.de>
Sat, 24 Nov 2007 16:27:54 +0000 (17:27 +0100)
committerVolker Lendecke <vl@sernet.de>
Wed, 5 Dec 2007 13:39:07 +0000 (14:39 +0100)
(This used to be commit 31d0a846db08d845e6cdfd85def4ac1c34031e02)

13 files changed:
source3/include/includes.h
source3/lib/util_str.c
source3/libads/dns.c
source3/libgpo/gpo_util.c
source3/libsmb/dsgetdcname.c
source3/libsmb/namecache.c
source3/libsmb/namequery.c
source3/libsmb/trustdom_cache.c
source3/param/loadparm.c
source3/rpc_server/srv_wkssvc_nt.c
source3/utils/net_conf.c
source3/web/swat.c
source3/winbindd/winbindd_util.c

index 9079c3aa826a7be47dc2bf3b2caf3ef816868e5f..22530f76afc408b3329247fa3b6a9b96f0b3f209 100644 (file)
@@ -1042,6 +1042,9 @@ int d_vfprintf(FILE *f, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0);
 
 int smb_xvasprintf(char **ptr, const char *format, va_list ap) PRINTF_ATTRIBUTE(2,0);
 
+int asprintf_strupper_m(char **strp, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
+char *talloc_asprintf_strupper_m(TALLOC_CTX *t, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
+
 /* we used to use these fns, but now we have good replacements
    for snprintf and vsnprintf */
 #define slprintf snprintf
index b86229951980f415779791902503ebba40cc432b..f26c8b8a77f73a8f15c24a97d610ce6cf0e30c59 100644 (file)
@@ -506,21 +506,6 @@ int strwicmp(const char *psz1, const char *psz2)
        return (*psz1 - *psz2);
 }
 
-
-/**
- Convert a string to upper case, but don't modify it.
-**/
-
-char *strupper_static(const char *s)
-{
-       static char *str = NULL;
-
-       SAFE_FREE(str);
-       str = SMB_STRDUP(s);
-       strupper_m(str);
-       return str;
-}
-
 /**
  Convert a string to "normal" form.
 **/
@@ -1147,7 +1132,7 @@ bool in_list(const char *s, const char *list, bool casesensitive)
 }
 
 /* this is used to prevent lots of mallocs of size 1 */
-static const char *null_string = "";
+static const char null_string[] = "";
 
 /**
  Set a string value, allocing the space for the string
@@ -1561,13 +1546,17 @@ static void split_at_last_component(char *path, char *front, char sep,
  Write an octal as a string.
 **/
 
-const char *octal_string(int i)
+char *octal_string(int i)
 {
-       static char ret[64];
-       if (i == -1)
-               return "-1";
-       slprintf(ret, sizeof(ret)-1, "0%o", i);
-       return ret;
+       char *result;
+       if (i == -1) {
+               result = talloc_strdup(talloc_tos(), "-1");
+       }
+       else {
+               result = talloc_asprintf(talloc_tos(), "0%o", i);
+       }
+       SMB_ASSERT(result != NULL);
+       return result;
 }
 
 
@@ -2552,7 +2541,7 @@ void rfc1738_unescape(char *buf)
        }
 }
 
-static const char *b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
 /**
  * Decode a base64 string into a DATA_BLOB - simple and slow algorithm
@@ -2860,6 +2849,44 @@ void sprintf_append(TALLOC_CTX *mem_ctx, char **string, ssize_t *len,
        *string = NULL;
 }
 
+/*
+ * asprintf into a string and strupper_m it after that.
+ */
+
+int asprintf_strupper_m(char **strp, const char *fmt, ...)
+{
+       va_list ap;
+       char *result;
+       int ret;
+
+       va_start(ap, fmt);
+       ret = vasprintf(&result, fmt, ap);
+       va_end(ap);
+
+       if (ret == -1)
+               return -1;
+
+       strupper_m(result);
+       *strp = result;
+       return ret;
+}
+
+char *talloc_asprintf_strupper_m(TALLOC_CTX *t, const char *fmt, ...)
+{
+       va_list ap;
+       char *ret;
+
+       va_start(ap, fmt);
+       ret = talloc_vasprintf(t, fmt, ap);
+       va_end(ap);
+
+       if (ret == NULL) {
+               return NULL;
+       }
+       strupper_m(ret);
+       return ret;
+}
+
 /*
    Returns the substring from src between the first occurrence of
    the char "front" and the first occurence of the char "back".
index cdc4b448cf739955812e6546427396525512dbd5..323989281408ee1ef0a2be009129d728a8e4d060 100644 (file)
@@ -709,7 +709,7 @@ static char *sitename_key(const char *realm)
 {
        char *keystr;
 
-       if (asprintf(&keystr, SITENAME_KEY, strupper_static(realm)) == -1) {
+       if (asprintf_strupper_m(&keystr, SITENAME_KEY, realm) == -1) {
                return NULL;
        }
 
index 126b44cc978b41613feb556a17f418e4ed74604b..cd532da48b3f5964854f95c6405ac5e81177a34f 100644 (file)
@@ -693,8 +693,8 @@ NTSTATUS gp_find_file(TALLOC_CTX *mem_ctx,
                return NT_STATUS_OK;
        }
 
-       tmp = talloc_asprintf(mem_ctx, "%s/%s/%s", filename,
-                             strupper_static(path), suffix);
+       tmp = talloc_asprintf_strupper_m(mem_ctx, "%s/%s/%s", filename, path,
+                                        suffix);
        NT_STATUS_HAVE_NO_MEMORY(tmp);
 
        if (sys_stat(tmp, &sbuf) == 0) {
index b0870e249e8e2db1f9c8580ba453e4bcc93f64bb..f8089cbd6a579691d5c7207efd154972ec8a32b0 100644 (file)
@@ -265,8 +265,7 @@ static char *DsGetDcName_cache_key(TALLOC_CTX *mem_ctx, const char *domain)
                return NULL;
        }
 
-       return talloc_asprintf(mem_ctx, DSGETDCNAME_FMT,
-                              strupper_static(domain));
+       return talloc_asprintf_strupper_m(mem_ctx, DSGETDCNAME_FMT, domain);
 }
 
 /****************************************************************
index 6a675d2ef2cc8aefdd733da8efe85c1b4ebab94a..ba706e5ee26488c7ea533a1db7bfec03550e1c0d 100644 (file)
@@ -98,7 +98,7 @@ static char* namecache_key(const char *name,
                                int name_type)
 {
        char *keystr;
-       asprintf(&keystr, NBTKEY_FMT, strupper_static(name), name_type);
+       asprintf_strupper_m(&keystr, NBTKEY_FMT, name, name_type);
 
        return keystr;
 }
@@ -318,8 +318,8 @@ static char *namecache_status_record_key(const char *name,
        char *keystr;
 
        print_sockaddr(addr, sizeof(addr), keyip);
-       asprintf(&keystr, "NBT/%s#%02X.%02X.%s",
-                       strupper_static(name), name_type1, name_type2, addr);
+       asprintf_strupper_m(&keystr, "NBT/%s#%02X.%02X.%s", name,
+                           name_type1, name_type2, addr);
        return keystr;
 }
 
index 71d709691408ff66f02a01b8852a272758174bed..04db3322caf7cafa9f83513a915b64da0be1e4a9 100644 (file)
@@ -39,7 +39,7 @@ static char *saf_key(const char *domain)
 {
        char *keystr;
 
-       asprintf( &keystr, SAFKEY_FMT, strupper_static(domain) );
+       asprintf_strupper_m(&keystr, SAFKEY_FMT, domain);
 
        return keystr;
 }
index f350cd0bc84f3ff280256ce2a25d9d5cff5b5afd..be73381aa32f4d5b98a3c22f6b64de49644909d1 100644 (file)
@@ -90,7 +90,7 @@ bool trustdom_cache_shutdown(void)
 static char* trustdom_cache_key(const char* name)
 {
        char* keystr = NULL;
-       asprintf(&keystr, TDOMKEY_FMT, strupper_static(name));
+       asprintf_strupper_m(&keystr, TDOMKEY_FMT, name);
        
        return keystr;
 }
index 16c6c59c7d48b216c5c029872266402413eeb621..dcb9b243f42605ba52bf0d43af1354247fa9ebab 100644 (file)
@@ -4240,9 +4240,12 @@ static void print_parameter(struct parm_struct *p, void *ptr, FILE * f)
                        fprintf(f, "%c", *(char *)ptr);
                        break;
 
-               case P_OCTAL:
-                       fprintf(f, "%s", octal_string(*(int *)ptr));
+               case P_OCTAL: {
+                       char *o = octal_string(*(int *)ptr);
+                       fprintf(f, "%s", o);
+                       TALLOC_FREE(o);
                        break;
+               }
 
                case P_LIST:
                        if ((char ***)ptr && *(char ***)ptr) {
index 70cf80c20ae9f49c5bd0ba1228c813e348f0da70..1e43b5ae994d56b839b0e2c3bf388dba39bb47ea 100644 (file)
@@ -36,10 +36,10 @@ static void create_wks_info_100(struct wkssvc_NetWkstaInfo100 *info100)
        info100->version_major   = lp_major_announce_version();
        info100->version_minor   = lp_minor_announce_version();
 
-       info100->server_name = talloc_strdup(
-               info100, strupper_static(global_myname()));
-       info100->domain_name = talloc_strdup(
-               info100, strupper_static(lp_workgroup()));
+       info100->server_name = talloc_asprintf_strupper_m(
+               info100, "%s", global_myname());
+       info100->domain_name = talloc_asprintf_strupper_m(
+               info100, "%s", lp_workgroup());
 
        return;
 }
index 6a601d8871b0214b2a771f4247699ad2ca02fe35..4ff4bd9a2983a618ef7b2884285d4464176e2c28 100644 (file)
@@ -494,9 +494,11 @@ static char *parm_valstr(TALLOC_CTX *ctx, struct parm_struct *parm,
                        }
                }
                break;
-       case P_OCTAL:
-               valstr = talloc_asprintf(ctx, "%s", octal_string(*(int *)ptr));
+       case P_OCTAL: {
+               char *o = octal_string(*(int *)ptr);
+               valstr = talloc_move(ctx, &o);
                break;
+       }
        case P_LIST:
                valstr = talloc_strdup(ctx, "");
                if ((char ***)ptr && *(char ***)ptr) {
index b36168f71ff6ca3438d4f92959a505cfb9d1cdc6..75a7f1939aec6f7bed9fa09e1820a47a07e8e1f8 100644 (file)
@@ -324,12 +324,19 @@ static void show_parameter(int snum, struct parm_struct *parm)
                        _("Set Default"), make_parm_name(parm->label),(int)(parm->def.ivalue));
                break;
 
-       case P_OCTAL:
-               printf("<input type=text size=8 name=\"parm_%s\" value=%s>", make_parm_name(parm->label), octal_string(*(int *)ptr));
-               printf("<input type=button value=\"%s\" onClick=\"swatform.parm_%s.value=\'%s\'\">",
-                      _("Set Default"), make_parm_name(parm->label),
-                      octal_string((int)(parm->def.ivalue)));
+       case P_OCTAL: {
+               char *o;
+               o = octal_string(*(int *)ptr);
+               printf("<input type=text size=8 name=\"parm_%s\" value=%s>",
+                      make_parm_name(parm->label), o);
+               TALLOC_FREE(o);
+               o = octal_string((int)(parm->def.ivalue));
+               printf("<input type=button value=\"%s\" "
+                      "onClick=\"swatform.parm_%s.value=\'%s\'\">",
+                      _("Set Default"), make_parm_name(parm->label), o);
+               TALLOC_FREE(o);
                break;
+       }
 
        case P_ENUM:
                printf("<select name=\"parm_%s\">",make_parm_name(parm->label)); 
index 5c8c8ea13de21bbcdadf92f8db6900ad5522c927..56ae4f27bb21f74738632ee65f366a82e68ed760 100644 (file)
@@ -1466,8 +1466,8 @@ static void winbindd_set_locator_kdc_env(const struct winbindd_domain *domain)
                return;
        }
 
-       if (asprintf(&var, "%s_%s", WINBINDD_LOCATOR_KDC_ADDRESS,
-                    strupper_static(domain->alt_name)) == -1) {
+       if (asprintf_strupper_m(&var, "%s_%s", WINBINDD_LOCATOR_KDC_ADDRESS,
+                               domain->alt_name) == -1) {
                return;
        }
 
@@ -1503,8 +1503,8 @@ void winbindd_unset_locator_kdc_env(const struct winbindd_domain *domain)
                return;
        }
 
-       if (asprintf(&var, "%s_%s", WINBINDD_LOCATOR_KDC_ADDRESS,
-                    strupper_static(domain->alt_name)) == -1) {
+       if (asprintf_strupper_m(&var, "%s_%s", WINBINDD_LOCATOR_KDC_ADDRESS,
+                               domain->alt_name) == -1) {
                return;
        }