pspp-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Pspp-cvs] Changes to pspp/src/flip.c


From: Ben Pfaff
Subject: [Pspp-cvs] Changes to pspp/src/flip.c
Date: Mon, 02 May 2005 02:21:34 -0400

Index: pspp/src/flip.c
diff -u pspp/src/flip.c:1.21 pspp/src/flip.c:1.22
--- pspp/src/flip.c:1.21        Fri Apr 29 01:02:14 2005
+++ pspp/src/flip.c     Mon May  2 06:21:20 2005
@@ -181,25 +181,27 @@
 static int
 make_new_var (char name[])
 {
+  char *cp;
+
+  /* Trim trailing spaces. */
+  cp = strchr (name, '\0');
+  while (cp > name && isspace ((unsigned char) cp[-1]))
+    *--cp = '\0';
+
   /* Fix invalid characters. */
-  {
-    char *cp;
-  
-    for (cp = name; *cp && !isspace (*cp); cp++)
+  for (cp = name; *cp && cp < name + SHORT_NAME_LEN; cp++)
+    if (cp == name) 
       {
-       *cp = toupper ((unsigned char) *cp);
-       if (!isalpha (*cp) && *cp != '@' && *cp != '#'
-           && (cp == name || (*cp != '.' && *cp != '$' && *cp != '_'
-                               && !isdigit (*cp))))
-         {
-           if (cp == name)
-             *cp = 'V';        /* _ not valid in first position. */
-           else
-             *cp = '_';
-         }
+        if (!CHAR_IS_ID1 (*cp) || *cp == '$')
+          *cp = 'V';
       }
-    *cp = 0;
-  }
+    else
+      {
+        if (!CHAR_IS_IDN (*cp))
+          *cp = '_'; 
+      }
+  *cp = '\0';
+  st_uppercase (name);
   
   if (dict_create_var (default_dict, name, 0))
     return 1;
@@ -323,8 +325,7 @@
             {
               char name[INT_DIGITS + 2];
               sprintf (name, "V%d", (int) f);
-              strncpy (v->name, name, SHORT_NAME_LEN);
-              name[SHORT_NAME_LEN] = 0; 
+              st_trim_copy (v->name, name, sizeof v->name);
             }
         }
       else




reply via email to

[Prev in Thread] Current Thread [Next in Thread]