---
 gattrib/src/s_rename.c     |   19 +++---------
 gnetlist/src/gnetlist.c    |    4 +--
 gnetlist/src/parsecmd.c    |    8 +----
 gnetlist/src/s_hierarchy.c |   14 +--------
 gnetlist/src/s_net.c       |   43 +++++++----------------------
 gnetlist/src/s_netattrib.c |   22 +++++----------
 gnetlist/src/s_rename.c    |   15 +++-------
 gnetlist/src/s_traverse.c  |    5 +---
 gschem/src/i_callbacks.c   |   11 +------
 gschem/src/o_slot.c        |    8 +-----
 gschem/src/o_undo.c        |   12 ++------
 gschem/src/x_dialog.c      |   10 +------
 gschem/src/x_menus.c       |    8 +----
 gsymcheck/src/s_check.c    |    4 +--
 libgeda/src/o_attrib.c     |   64 +++++++++-----------------------------------
 libgeda/src/s_attrib.c     |    5 +---
 libgeda/src/s_basic.c      |    4 +--
 libgeda/src/s_papersizes.c |    5 +---
 libgeda/src/s_slib.c       |   38 +++----------------------
 19 files changed, 64 insertions(+), 235 deletions(-)

diff --git a/gattrib/src/s_rename.c b/gattrib/src/s_rename.c
index d8bd735..1399493 100644
--- a/gattrib/src/s_rename.c
+++ b/gattrib/src/s_rename.c
@@ -183,15 +183,9 @@ void s_rename_add(char *src, char *dest)
 #endif
 
                    rename_pairs[cur_set][rename_counter].src =
-                       (char *) g_malloc(sizeof(char) * (strlen(src) + 1));
-                   strcpy(rename_pairs[cur_set][rename_counter].src, src);
+                       g_strdup(src);
                    rename_pairs[cur_set][rename_counter].dest =
-                       (char *) g_malloc(sizeof(char) *
-                                       (strlen
-                                        (rename_pairs[cur_set][i].dest) +
-                                        1));
-                   strcpy(rename_pairs[cur_set][rename_counter].dest,
-                          rename_pairs[cur_set][i].dest);
+                       g_strdup(rename_pairs[cur_set][i].dest);
                    rename_counter++;
                }
            }
@@ -199,11 +193,9 @@ void s_rename_add(char *src, char *dest)
     } else {
 
        rename_pairs[cur_set][rename_counter].src =
-           (char *) g_malloc(sizeof(char) * (strlen(src) + 1));
-       strcpy(rename_pairs[cur_set][rename_counter].src, src);
+           g_strdup(src);
        rename_pairs[cur_set][rename_counter].dest =
-           (char *) g_malloc(sizeof(char) * (strlen(dest) + 1));
-       strcpy(rename_pairs[cur_set][rename_counter].dest, dest);
+           g_strdup(dest);
        rename_counter++;
     }
     if (rename_counter == MAX_RENAME) {
@@ -236,8 +228,7 @@ void s_rename_all_lowlevel(NETLIST * netlist_head, char 
*src, char *dest)
                        /*g_free(pl_current->net_name); */
 
                        pl_current->net_name =
-                           g_malloc(sizeof(char) * (strlen(dest) + 1));
-                       strcpy(pl_current->net_name, dest);
+                           g_strdup(dest);
                    }
                }
 
diff --git a/gnetlist/src/gnetlist.c b/gnetlist/src/gnetlist.c
index 09ddd88..fa4f628 100644
--- a/gnetlist/src/gnetlist.c
+++ b/gnetlist/src/gnetlist.c
@@ -118,9 +118,7 @@ void main_prog(void *closure, int argc, char *argv[])
     TOPLEVEL *pr_current;
 
     /* set default output filename */
-    output_filename =
-        (char *) g_malloc(sizeof(char) * (strlen("output.net") + 1));
-    strcpy(output_filename, "output.net");
+    output_filename = g_strdup("output.net");
 
     argv_index = parse_commandline(argc, argv);
     cwd = getcwd(NULL, MAXPATHLEN);
diff --git a/gnetlist/src/parsecmd.c b/gnetlist/src/parsecmd.c
index 19adb01..bf2ef94 100644
--- a/gnetlist/src/parsecmd.c
+++ b/gnetlist/src/parsecmd.c
@@ -162,9 +162,7 @@ int parse_commandline(int argc, char *argv[])
            break;
 
        case 'g':
-           guile_proc = (char *) g_malloc(sizeof(char) *
-                                        (strlen(optarg) + 1));
-           strcpy(guile_proc, optarg);
+           guile_proc = g_strdup(optarg);
 
            break;
 
@@ -183,9 +181,7 @@ int parse_commandline(int argc, char *argv[])
 
        case 'o':
            g_free(output_filename);
-           output_filename = (char *) g_malloc(sizeof(char) *
-                                             (strlen(optarg) + 1));
-           strcpy(output_filename, optarg);
+           output_filename = g_strdup(optarg);
            break;
 
        case 'O':        
diff --git a/gnetlist/src/s_hierarchy.c b/gnetlist/src/s_hierarchy.c
index 11e9c47..2f0cc06 100644
--- a/gnetlist/src/s_hierarchy.c
+++ b/gnetlist/src/s_hierarchy.c
@@ -564,9 +564,7 @@ s_hierarchy_remove_uref_mangling(TOPLEVEL * pr_current, 
NETLIST * head)
                    sscanf(n_current->connected_to, "%s %s", uref, pin);
                    new_uref =
                        s_hierarchy_return_baseuref(pr_current, uref);
-                   new_connected_to =
-                       g_strdup(n_current->connected_to);
-                   sprintf(new_connected_to, "%s %s", new_uref, pin);
+                   new_connected_to = g_strdup_printf("%s %s", new_uref, pin);
                    g_free(n_current->connected_to);
                    n_current->connected_to = new_connected_to;
                }
@@ -586,7 +584,6 @@ char *s_hierarchy_return_baseuref(TOPLEVEL * pr_current, 
char *uref)
     char *start_of_base = NULL;
     char *end_of_base = NULL;
     char *cptr = NULL;
-    int i = 0;
 
     /* use hierarchy separator */
 
@@ -618,14 +615,7 @@ char *s_hierarchy_return_baseuref(TOPLEVEL * pr_current, 
char *uref)
 
        cptr = uref;
 
-       return_value = (char *) g_malloc(sizeof(char) * (strlen(uref)));
-       i = 0;
-       while (cptr != end_of_base) {
-           return_value[i] = *cptr;
-           i++;
-           cptr++;
-       }
-       return_value[i] = '\0';
+       return_value = g_strndup(uref, end_of_base - uref);
     }
 
 #if DEBUG
diff --git a/gnetlist/src/s_net.c b/gnetlist/src/s_net.c
index da1287b..f507fe0 100644
--- a/gnetlist/src/s_net.c
+++ b/gnetlist/src/s_net.c
@@ -180,30 +180,19 @@ char *s_net_return_connected_string(TOPLEVEL * 
pr_current, OBJECT * object,
     uref = s_hierarchy_create_uref(pr_current, temp_uref, hierarchy_tag);
 
     if (uref && pinnum) {
-       string = (char *) g_malloc(sizeof(char) *
-                                strlen(uref) + strlen(pinnum) +
-                                strlen("  ") + 1);
-
-       sprintf(string, "%s %s", uref, pinnum);
+       string = g_strdup_printf("%s %s", uref, pinnum);
     } else {
        if (pinnum) {
-           string = (char *) g_malloc(sizeof(char) *
-                                    strlen(pinnum) +
-                                    strlen("POWER") + strlen("  ") + 1);
-           sprintf(string, "POWER %s", pinnum);
+           string = g_strdup_printf("POWER %s", pinnum);
        } else {
-           string = (char *) g_malloc(sizeof(char) *
-                                    strlen("U?") + strlen("?") +
-                                    strlen("  ") + 1 + hierarchy_tag_len);
-
            if (hierarchy_tag) {
                misc =
                    s_hierarchy_create_uref(pr_current, "U?",
                                            hierarchy_tag);
-               sprintf(string, "%s ?", misc);
+               string = g_strdup_printf("%s ?", misc);
                g_free(misc);
            } else {
-               sprintf(string, "U? ?");
+               string = g_strdup("U? ?");
            }
 
            fprintf(stderr, "Missing Attributes (refdes and pin number)\n");
@@ -424,12 +413,8 @@ char *s_net_name(TOPLEVEL * pr_current, NETLIST * 
netlist_head,
 
     if (net_head->nid == -1 && net_head->prev == NULL
        && net_head->next == NULL) {
-       string =
-           (char *) g_malloc(sizeof(char) * (strlen("unconnected_pin-")) +
-                           10);
-
-       sprintf(string, "unconnected_pin-%d", 
-               unnamed_pin_counter++);
+       string = g_strdup_printf("unconnected_pin-%d",
+                           unnamed_pin_counter++);
 
        return (string);
 
@@ -447,29 +432,21 @@ char *s_net_name(TOPLEVEL * pr_current, NETLIST * 
netlist_head,
 
        if (netlist_mode == SPICE) {
            string =
-               (char *) g_malloc(sizeof(char) * (strlen("99999") + 10));
-           sprintf(string, "%d", unnamed_net_counter++);
+        g_strdup_printf("%d", unnamed_net_counter++);
 
            return (string);
        } else {
-           string =
-               (char *) g_malloc(sizeof(char) *
-                               (strlen(pr_current->unnamed_netname) + 10 +
-                                hierarchy_tag_len));
-
            if (hierarchy_tag) {
-               temp =
-                   (char *) g_malloc(sizeof(char) * (strlen("99999") + 10));
-               sprintf(temp, "%s%d", pr_current->unnamed_netname, 
+               temp = g_strdup_printf("%s%d", pr_current->unnamed_netname, 
                        unnamed_net_counter++);
 
                misc =
                    s_hierarchy_create_netname(pr_current, temp,
                                               hierarchy_tag);
-               strcpy(string, misc);
+               string = g_strdup(misc);
                g_free(misc);
            } else {
-               sprintf(string, "%s%d", pr_current->unnamed_netname, 
+               string = g_strdup_printf("%s%d", pr_current->unnamed_netname, 
                        unnamed_net_counter++);
            }
 
diff --git a/gnetlist/src/s_netattrib.c b/gnetlist/src/s_netattrib.c
index 36a0101..ed21ebc 100644
--- a/gnetlist/src/s_netattrib.c
+++ b/gnetlist/src/s_netattrib.c
@@ -130,14 +130,10 @@ s_netattrib_create_pins(TOPLEVEL * pr_current, OBJECT * 
o_current,
                    s_hierarchy_create_netattrib(pr_current, net_name,
                                                 hierarchy_tag);
                old_cpin->nets->net_name_has_priority = TRUE;
-               connected_to =
-                   (char *) g_malloc(sizeof(char) *
-                                   (strlen
-                                    (netlist->component_uref) +
-                                    strlen(current_pin) + 2));
-               sprintf(connected_to, "%s %s",
-                       netlist->component_uref, current_pin);
-               old_cpin->nets->connected_to = g_strdup (connected_to);
+               connected_to = g_strdup_printf("%s %s",
+                                   netlist->component_uref,
+                                   current_pin);
+               old_cpin->nets->connected_to = g_strdup(connected_to);
                old_cpin->nets->nid = o_current->sid;
                g_free(connected_to);
            } else {
@@ -156,13 +152,9 @@ s_netattrib_create_pins(TOPLEVEL * pr_current, OBJECT * 
o_current,
                    s_hierarchy_create_netattrib(pr_current, net_name,
                                                 hierarchy_tag);
 
-               connected_to =
-                   (char *) g_malloc(sizeof(char) *
-                                   (strlen
-                                    (netlist->component_uref) +
-                                    strlen(current_pin) + 2));
-               sprintf(connected_to, "%s %s",
-                       netlist->component_uref, current_pin);
+               connected_to = g_strdup_printf("%s %s",
+                                   netlist->component_uref,
+                                   current_pin);
                new_cpin->nets->connected_to = g_strdup(connected_to);
                new_cpin->nets->nid = o_current->sid;
 
diff --git a/gnetlist/src/s_rename.c b/gnetlist/src/s_rename.c
index aaaf3a9..745a84a 100644
--- a/gnetlist/src/s_rename.c
+++ b/gnetlist/src/s_rename.c
@@ -192,10 +192,8 @@ void s_rename_add(char *src, char *dest)
                if (new_rename)
                {
                     new_rename->next = NULL;
-                     new_rename->src = (char *) g_malloc(sizeof(char) * 
(strlen(src) + 1));
-                     strcpy(new_rename->src, src);
-                     new_rename->dest = (char *) g_malloc(sizeof(char) * 
(strlen(temp->dest) + 1));
-                     strcpy(new_rename->dest, temp->dest);
+                     new_rename->src = g_strdup(src);
+                     new_rename->dest = g_strdup(temp->dest);
                     /* If the rename pair was found then a set already exists, 
so there's no need the check it */
                     if (last_set->first_rename == NULL)
                     {
@@ -230,10 +228,8 @@ void s_rename_add(char *src, char *dest)
         if (new_rename)
        {
             new_rename->next = NULL;
-             new_rename->src = (char *) g_malloc(sizeof(char) * (strlen(src) + 
1));
-             strcpy(new_rename->src, src);
-             new_rename->dest = (char *) g_malloc(sizeof(char) * (strlen(dest) 
+ 1));
-             strcpy(new_rename->dest, dest);
+             new_rename->src = g_strdup(src);
+             new_rename->dest = g_strdup(dest);
             if (last_set->first_rename == NULL)
             {
                 last_set->first_rename = last_set->last_rename = new_rename;
@@ -265,8 +261,7 @@ void s_rename_all_lowlevel(NETLIST * netlist_head, char 
*src, char *dest)
                {
                     if (strcmp(pl_current->net_name, src) == 0) 
                    {
-                        pl_current->net_name = g_malloc(sizeof(char) * 
(strlen(dest) + 1));
-                        strcpy(pl_current->net_name, dest);
+                        pl_current->net_name = g_strdup(dest);
                     }
                 }
                 pl_current = pl_current->next;
diff --git a/gnetlist/src/s_traverse.c b/gnetlist/src/s_traverse.c
index 4f3328b..86917fc 100644
--- a/gnetlist/src/s_traverse.c
+++ b/gnetlist/src/s_traverse.c
@@ -177,10 +177,7 @@ s_traverse_sheet(TOPLEVEL * pr_current, OBJECT * start,
          fprintf(stderr,
                  "Could not find refdes on component and could not find any 
special attributes!\n");
          
-         netlist->component_uref =
-           (char *) g_malloc(sizeof(char) * strlen("U?") +
-                           1);
-         strcpy(netlist->component_uref, "U?");
+         netlist->component_uref = g_strdup("U?");
        } else {
          
 #if DEBUG
diff --git a/gschem/src/i_callbacks.c b/gschem/src/i_callbacks.c
index d6247ec..bf68e1c 100644
--- a/gschem/src/i_callbacks.c
+++ b/gschem/src/i_callbacks.c
@@ -75,19 +75,12 @@ static const char *fnameext_get(const char* fname)
 static char *fnameext_remove(const char *fname)
 {
   const char *p = fnameext_get(fname);
-  char *fname_new;
-  int len;
+  char *fname_new = NULL;
 
   if(*p == '\0') {
     fname_new = g_strdup (p);
   } else {
-    len = (p - fname); /*  + 1; this extra was causing grief */
-    fname_new = (char *) g_malloc(sizeof(char) * (len + 1));
-    if(fname_new == NULL) {
-      return NULL;
-    }
-    strncpy(fname_new, fname, len);
-    fname_new[len] = '\0';
+    fname_new = g_strndup (fname_new, p - fname);
   }
   return fname_new;
 }
diff --git a/gschem/src/o_slot.c b/gschem/src/o_slot.c
index b63ddb4..d8363d7 100644
--- a/gschem/src/o_slot.c
+++ b/gschem/src/o_slot.c
@@ -81,13 +81,7 @@ void o_slot_start(GSCHEM_TOPLEVEL *w_current, OBJECT *list)
         o_attrib_search_default_slot(object);
 
       if (default_slot_value) {
-                               /* two is for null and equals sign */
-        slot_value = (char *) g_malloc(sizeof(char)*(
-                                                   strlen("slot")+
-                                                   strlen(default_slot_value)+
-                                                   2));
-        sprintf(slot_value, "slot=%s",
-                default_slot_value);
+        slot_value = g_strdup_printf ("slot=%s", default_slot_value);
       } else {
                                /* no default, make something up? */
                                /* for now.. this is an error
diff --git a/gschem/src/o_undo.c b/gschem/src/o_undo.c
index 3d2d2a8..f262562 100644
--- a/gschem/src/o_undo.c
+++ b/gschem/src/o_undo.c
@@ -104,15 +104,9 @@ void o_undo_savestate(GSCHEM_TOPLEVEL *w_current, int flag)
       toplevel->page_current->ops_since_last_backup++;
     }
 
-    /* 32 is? for max length of pid and index */
-
-
-    filename = g_malloc(sizeof(char)*(strlen("/gschem.save_.sch")
-                                      + strlen(TMP) + 32));
-
-    sprintf(filename, "%s%cgschem.save%d_%d.sch", TMP, G_DIR_SEPARATOR,
-            prog_pid, 
-            undo_file_index++);
+    filename = g_strdup_printf("%s%cgschem.save%d_%d.sch",
+                               TMP, G_DIR_SEPARATOR,
+                               prog_pid, undo_file_index++);
 
     /* Changed from f_save to o_save when adding backup copy creation. */
     /* f_save manages the creaton of backup copies. 
diff --git a/gschem/src/x_dialog.c b/gschem/src/x_dialog.c
index a2aa003..180fbbf 100644
--- a/gschem/src/x_dialog.c
+++ b/gschem/src/x_dialog.c
@@ -3187,20 +3187,12 @@ int text_view_calculate_real_tab_width(GtkTextView 
*textview, int tab_size)
 {
   PangoLayout *layout;
   gchar *tab_string;
-  gint counter = 0;
   gint tab_width = 0;
 
   if (tab_size == 0)
   return -1;
 
-  tab_string = g_malloc (tab_size + 1);
-
-  while (counter < tab_size) {
-    tab_string [counter] = ' ';
-    counter++;
-  }
-
-  tab_string [tab_size] = 0;
+  tab_string = g_strnfill (tab_size, ' ');
 
   layout = gtk_widget_create_pango_layout (
                                            GTK_WIDGET (textview),
diff --git a/gschem/src/x_menus.c b/gschem/src/x_menus.c
index 167df2c..0af0f3b 100644
--- a/gschem/src/x_menus.c
+++ b/gschem/src/x_menus.c
@@ -165,9 +165,7 @@ void get_main_menu(GtkWidget ** menubar)
         scm_keys = scm_c_eval_string (buf);
        g_free(buf);
         if (scm_keys == SCM_BOOL_F) {
-          menu_item_keys = g_malloc(sizeof(char)*2);
-          menu_item_keys[0] = ' ';
-          menu_item_keys[1] = '\0';
+          menu_item_keys = g_strdup (" ");
         } else {
           menu_item_keys = g_strdup (SCM_STRING_CHARS (scm_keys));
         }      
@@ -191,9 +189,7 @@ void get_main_menu(GtkWidget ** menubar)
            pad = 1;
        } 
 
-        spaces = g_malloc(sizeof(char)*(pad+1));
-        memset(spaces, ' ', pad);
-        spaces[pad] = '\0';
+        spaces = g_strnfill (pad, ' ');
         buf = g_strdup_printf("%s%s%s", menu_item_name, spaces, 
menu_item_keys);
 
 #if DEBUG
diff --git a/gsymcheck/src/s_check.c b/gsymcheck/src/s_check.c
index 75cf75a..476759f 100644
--- a/gsymcheck/src/s_check.c
+++ b/gsymcheck/src/s_check.c
@@ -282,9 +282,7 @@ s_check_device(OBJECT *o_current, SYMCHECK *s_current)
   } else {
     /* found device= attribute */
     s_current->missing_device_attrib=FALSE;
-    s_current->device_attribute =
-      (char *) g_malloc(sizeof(char)*(strlen(temp)+1));
-    strcpy(s_current->device_attribute, temp);
+    s_current->device_attribute = g_strdup (temp);
     message = g_strdup_printf ("Found device=%s\n", temp);
     s_current->info_messages = g_list_append(s_current->info_messages,
                                             message);
diff --git a/libgeda/src/o_attrib.c b/libgeda/src/o_attrib.c
index e26a20e..eb29775 100644
--- a/libgeda/src/o_attrib.c
+++ b/libgeda/src/o_attrib.c
@@ -673,8 +673,6 @@ void o_attrib_free_current(TOPLEVEL *toplevel)
  */
 void o_attrib_set_string(TOPLEVEL *toplevel, char *string)
 {
-  int len;
-
   /* need to put an error messages here */
   if (string == NULL)  {
     fprintf(stderr, "error! string in set_string was NULL\n");
@@ -686,11 +684,7 @@ void o_attrib_set_string(TOPLEVEL *toplevel, char *string)
     toplevel->current_attribute=NULL;
   }
 
-  len = strlen(string);
-
-  toplevel->current_attribute = (char *) g_malloc(sizeof(char)*len+1);
-
-  strcpy(toplevel->current_attribute,string);
+  toplevel->current_attribute = g_strdup (string);
        
   /* be sure to g_free this string somewhere and free the input string */
 }
@@ -800,9 +794,7 @@ char *o_attrib_search_name(OBJECT *list, char *name, int 
counter)
                 if (counter != internal_counter) {
                   internal_counter++;  
                 } else {
-                  return_string = (char *) 
-                    g_malloc(sizeof(char)*strlen(found_value)+1);
-                  strcpy(return_string, found_value);
+                  return_string = g_strdup (found_value);
                  g_free(found_name);
                  g_free(found_value);
                   return(return_string);
@@ -835,9 +827,7 @@ char *o_attrib_search_name(OBJECT *list, char *name, int 
counter)
           if (counter != internal_counter) {
             internal_counter++;        
           } else {
-            return_string = (char *) 
-              g_malloc(sizeof(char)* strlen(found_value)+1);
-            strcpy(return_string, found_value);
+            return_string = g_strdup (found_value);
            g_free(found_name);
            g_free(found_value);
             return(return_string);
@@ -1159,9 +1149,7 @@ o_attrib_search_attrib_name(GList *list, char *name, int 
counter)
             if (counter != internal_counter) {
               internal_counter++;      
             } else {
-              return_string = (char *) 
-                g_malloc(sizeof(char)* strlen(found_value)+1);
-              strcpy(return_string, found_value);
+              return_string = g_strdup (found_value);
              g_free(found_name);
              g_free(found_value);
               return(return_string);
@@ -1221,9 +1209,7 @@ char *o_attrib_search_toplevel(OBJECT *list, char *name, 
int counter)
           if (counter != internal_counter) {
             internal_counter++;        
           } else {
-            return_string = (char *) 
-              g_malloc(sizeof(char)* strlen(found_value)+1);
-            strcpy(return_string, found_value);
+            return_string = g_strdup (found_value);
            g_free(found_name);
            g_free(found_value);
             return(return_string);
@@ -1286,9 +1272,7 @@ char *o_attrib_search_name_single(OBJECT *object, char 
*name,
 
           if (val) {
             if (strcmp(name, found_name) == 0) {
-              return_string = (char *) 
-                g_malloc(sizeof(char)* strlen(found_value)+1);
-              strcpy(return_string, found_value);
+              return_string = g_strdup (found_value);
               if (return_found) {
                 *return_found = found;
               }
@@ -1320,9 +1304,7 @@ char *o_attrib_search_name_single(OBJECT *object, char 
*name,
 
     if (val) {
       if (strcmp(name, found_name) == 0) {
-        return_string = (char *) 
-          g_malloc(sizeof(char)* strlen(found_value)+1);
-        strcpy(return_string, found_value);
+        return_string = g_strdup (found_value);
         if (return_found) {
           *return_found = o_current;
         }
@@ -1395,9 +1377,7 @@ char *o_attrib_search_name_single_count(OBJECT *object, 
char *name,
               if (counter != internal_counter) {
                 internal_counter++;
               } else {
-                return_string = (char *) 
-                  g_malloc(sizeof(char)* strlen(found_value)+1);
-                strcpy(return_string, found_value);
+                return_string = g_strdup (found_value);
                g_free(found_name);
                g_free(found_value);
                 return(return_string);
@@ -1431,9 +1411,7 @@ char *o_attrib_search_name_single_count(OBJECT *object, 
char *name,
         if (counter != internal_counter) {
           internal_counter++;
         } else {
-          return_string = (char *) 
-            g_malloc(sizeof(char)* strlen(found_value)+1);
-          strcpy(return_string, found_value);
+          return_string = g_strdup (found_value);
          g_free(found_name);
          g_free(found_value);
           return(return_string);
@@ -1549,10 +1527,7 @@ OBJECT *o_attrib_search_pinseq(OBJECT *list, int 
pin_number)
   OBJECT *pinseq_text_object;
   char *search_for;
 
-  /* The 9 is the number of allowed digits plus null */
-  search_for = (char *) g_malloc(sizeof(char)*(strlen("pinseq=")+9));
-  sprintf(search_for, "pinseq=%d", pin_number);
-
+  search_for = g_strdup_printf ("pinseq=%d", pin_number);
   pinseq_text_object = o_attrib_search_string_list(list, search_for);
   g_free(search_for);
   
@@ -1580,10 +1555,7 @@ char *o_attrib_search_slotdef(OBJECT *object, int 
slotnumber)
   char *search_for=NULL;
   OBJECT *o_current;
 
-  /* The 9 is the number of digits plus null */
-  search_for = (char *) g_malloc(sizeof(char)*(strlen("slotdef=:")+9));
-
-  sprintf(search_for, "slotdef=%d:", slotnumber);
+  search_for = g_strdup_printf ("slotdef=%d:", slotnumber);
 
   o_current = object->complex->prim_objs;
   while (o_current != NULL) {
@@ -1739,12 +1711,7 @@ void o_attrib_slot_update(TOPLEVEL *toplevel, OBJECT 
*object)
           o_pinnum_object->text->string) {
         g_free(o_pinnum_object->text->string);
 
-        /* 9 is the size of one number plus null character */
-        o_pinnum_object->text->string = (char *)
-          g_malloc(sizeof(char)*(strlen("pinnumber=")+strlen(current_pin)+9));
-
-        /* removed _int from current_pin */
-        sprintf(o_pinnum_object->text->string, "pinnumber=%s", current_pin);
+        o_pinnum_object->text->string = g_strdup_printf ("pinnumber=%s", 
current_pin);
         
         o_text_recreate(toplevel, o_pinnum_object);
       }
@@ -1840,12 +1807,7 @@ void o_attrib_slot_copy(TOPLEVEL *toplevel, OBJECT 
*original, OBJECT *target)
         g_free(string);
         g_free(o_pinnum_object->text->string);
 
-        /* 9 is the size of one number plus null character */
-        o_pinnum_object->text->string = (char *)
-          g_malloc(sizeof(char)*(strlen("pinnumber=")+strlen(current_pin)+9));
-
-        /* removed _int from current_pin */
-        sprintf(o_pinnum_object->text->string, "pinnumber=%s", current_pin);
+        o_pinnum_object->text->string = g_strdup_printf ("pinnumber=%s", 
current_pin);
         
         o_text_recreate(toplevel, o_pinnum_object);
       }
diff --git a/libgeda/src/s_attrib.c b/libgeda/src/s_attrib.c
index f0d5430..8f52f63 100644
--- a/libgeda/src/s_attrib.c
+++ b/libgeda/src/s_attrib.c
@@ -64,10 +64,7 @@ int s_attrib_add_entry(char *new_attrib)
     return(-1); 
   }
        
-  attrib[attrib_index].attrib_name = (char *) 
-    g_malloc(sizeof(char)*strlen(new_attrib)+1);
-
-  strcpy(attrib[attrib_index].attrib_name, new_attrib);
+  attrib[attrib_index].attrib_name = g_strdup (new_attrib);
 
   attrib_index++;
   return(attrib_index);
diff --git a/libgeda/src/s_basic.c b/libgeda/src/s_basic.c
index b6169f2..531ce1a 100644
--- a/libgeda/src/s_basic.c
+++ b/libgeda/src/s_basic.c
@@ -152,9 +152,7 @@ OBJECT *s_basic_init_object( char *name )
   new_node->type = -1;
 
   /* Setup the name */
-  /*! \todo get rid of magic number 16 that's the size of new_node->sid, */
-  new_node->name = (char *) g_malloc(sizeof(char)*(strlen(name)+16));
-  sprintf(new_node->name, "%s.%d", name, new_node->sid);
+  new_node->name = g_strdup_printf("%s.%d", name, new_node->sid);
 
   /* Setup the bounding box */
   new_node->w_top = 0;
diff --git a/libgeda/src/s_papersizes.c b/libgeda/src/s_papersizes.c
index 2291448..cfe3457 100644
--- a/libgeda/src/s_papersizes.c
+++ b/libgeda/src/s_papersizes.c
@@ -67,10 +67,7 @@ int s_papersizes_add_entry(char *new_papersize, int width, 
int height)
     return(-1); 
   }
        
-  papersizes[papersizes_index].papersize_name = 
-    (char *) g_malloc(sizeof(char)*strlen(new_papersize)+1);
-
-  strcpy(papersizes[papersizes_index].papersize_name, new_papersize);
+  papersizes[papersizes_index].papersize_name = g_strdup (new_papersize);
 
   papersizes[papersizes_index].width = width;
   papersizes[papersizes_index].height = height;
diff --git a/libgeda/src/s_slib.c b/libgeda/src/s_slib.c
index c5b1d5d..2f0c569 100644
--- a/libgeda/src/s_slib.c
+++ b/libgeda/src/s_slib.c
@@ -74,10 +74,7 @@ int s_slib_add_entry(char *new_path)
     return(-1); 
   }
 
-  slib[slib_index].dir_name = 
-    (char *) g_malloc(sizeof(char)*strlen(new_path)+1);
-
-  strcpy(slib[slib_index].dir_name, new_path);
+  slib[slib_index].dir_name = g_strdup (new_path);
 
   slib_index++;
   return(slib_index);
@@ -112,7 +109,6 @@ int s_slib_search_for_dirname(char *dir_name)
 char *s_slib_search_dirs(const char *basename)
 {
   int i;
-  int len;
   DIR *ptr=NULL;
   struct dirent *dptr;
   char *slib_path=NULL;
@@ -138,9 +134,7 @@ char *s_slib_search_dirs(const char *basename)
 
       /* Do a substring comp for a match */
       if (strstr(dptr->d_name, basename) != NULL)  {
-        len = strlen(slib[i].dir_name);                                
-        slib_path = (char *) g_malloc(sizeof(char)*len+1);
-        strcpy(slib_path, slib[i].dir_name);
+        slib_path = g_strdup (slib[i].dir_name);
        
         if (ptr) {
           closedir(ptr);
@@ -178,7 +172,6 @@ char *s_slib_search_lowlevel(const char *basename)
 {
   char *slib_path=NULL;
   char *full_path=NULL;
-  int len;
 
   slib_path = s_slib_search_dirs(basename);
 
@@ -188,13 +181,7 @@ char *s_slib_search_lowlevel(const char *basename)
     s_log_message(_("Found [%s]\n"), basename);
     /* s_log_message("Found [%s] in [%s]\n", basename, slib_path);*/
 
-    len = strlen(basename)+strlen(slib_path);
-       
-    /* The 2 is for NULL char and the slash inbetween the two */
-    /* strings */      
-    full_path = (char *) g_malloc(sizeof(char)*(len+2));
-
-    sprintf(full_path, "%s%c%s", slib_path, G_DIR_SEPARATOR, basename);
+    full_path = g_build_filename (slib_path, basename, NULL);
                
     g_free(slib_path);
 
@@ -323,9 +310,6 @@ char *s_slib_search(const char *filename, int flag)
   char *processed_name=NULL;
   char *new_filename=NULL;
   char *string=NULL;
-  char *number_suffix;
-  int len;
-  int len2;
   static int count;
 
   switch(flag) {
@@ -344,21 +328,14 @@ char *s_slib_search(const char *filename, int flag)
       printf("proced: %s\n", processed_name);
 #endif
 
-      len = strlen(processed_name);
-
       /* for now only look for .sch's */
       /* this needs to be *MUCH* more flexible */
       /* number_suffix is large enough ? */
-      number_suffix = g_strdup_printf("_%d.sch", count); 
-      len2 = strlen(number_suffix);
-      new_filename = (char *) 
-        g_malloc (sizeof(char)*(len+len2+1));
+      new_filename = g_strdup_printf ("%s_%d.sch", processed_name, count);
 
-      sprintf(new_filename, "%s%s", processed_name, number_suffix);
       string = s_slib_search_lowlevel(new_filename);
 
       g_free(new_filename);
-      g_free(number_suffix);
       break;
 
     case(SLIB_SEARCH_DONE):
@@ -473,7 +450,6 @@ char *s_slib_getfiles(char *directory, int flag)
   static int current=0;
 
   int j;
-  int len;
 
   switch(flag) {
 
@@ -531,14 +507,10 @@ char *s_slib_getfiles(char *directory, int flag)
         }      
 
         if (dptr->d_name != NULL) {
-          len = strlen(dptr->d_name);
-
           /* hack */
           if (count < 256) {
 
-            whole_dir[count] = (char *)
-              g_malloc(sizeof(char)*len+1);
-            strcpy(whole_dir[count], dptr->d_name);
+            whole_dir[count] = g_strdup (dptr->d_name);
             count++;
           } else {
             fprintf(stderr, 
-- 
1.5.6




_______________________________________________
geda-dev mailing list
[email protected]
http://www.seul.org/cgi-bin/mailman/listinfo/geda-dev

Reply via email to