and [BUG] \X and \C fixed, \X still dorked
[p5sagit/p5-mst-13.2.git] / x2p / str.c
index 0587205..2d44e2f 100644 (file)
--- a/x2p/str.c
+++ b/x2p/str.c
@@ -55,7 +55,7 @@ str_2num(register STR *str)
     str->str_nok = 1;
 #ifdef DEBUGGING
     if (debug & 32)
-       fprintf(stderr,"0x%lx num(%g)\n",(unsigned long)str,str->str_nval);
+       fprintf(stderr,"0x%lx num(%"NVgf")\n",(unsigned long)str,str->str_nval);
 #endif
     return str->str_nval;
 }
@@ -77,7 +77,7 @@ void
 str_nset(register STR *str, register char *ptr, register int len)
 {
     GROWSTR(&(str->str_ptr), &(str->str_len), len + 1);
-    bcopy(ptr,str->str_ptr,len);
+    memcpy(str->str_ptr,ptr,len);
     str->str_cur = len;
     *(str->str_ptr+str->str_cur) = '\0';
     str->str_nok = 0;          /* invalidate number */
@@ -93,7 +93,7 @@ str_set(register STR *str, register char *ptr)
        ptr = "";
     len = strlen(ptr);
     GROWSTR(&(str->str_ptr), &(str->str_len), len + 1);
-    bcopy(ptr,str->str_ptr,len+1);
+    memcpy(str->str_ptr,ptr,len+1);
     str->str_cur = len;
     str->str_nok = 0;          /* invalidate number */
     str->str_pok = 1;          /* validate pointer */
@@ -107,7 +107,7 @@ str_chop(register STR *str, register char *ptr)     /* like set but assuming ptr is
     if (!(str->str_pok))
        str_2ptr(str);
     str->str_cur -= (ptr - str->str_ptr);
-    bcopy(ptr,str->str_ptr, str->str_cur + 1);
+    memcpy(str->str_ptr, ptr, str->str_cur + 1);
     str->str_nok = 0;          /* invalidate number */
     str->str_pok = 1;          /* validate pointer */
 }
@@ -118,7 +118,7 @@ str_ncat(register STR *str, register char *ptr, register int len)
     if (!(str->str_pok))
        str_2ptr(str);
     GROWSTR(&(str->str_ptr), &(str->str_len), str->str_cur + len + 1);
-    bcopy(ptr,str->str_ptr+str->str_cur,len);
+    memcpy(str->str_ptr+str->str_cur, ptr, len);
     str->str_cur += len;
     *(str->str_ptr+str->str_cur) = '\0';
     str->str_nok = 0;          /* invalidate number */
@@ -145,7 +145,7 @@ str_cat(register STR *str, register char *ptr)
        str_2ptr(str);
     len = strlen(ptr);
     GROWSTR(&(str->str_ptr), &(str->str_len), str->str_cur + len + 1);
-    bcopy(ptr,str->str_ptr+str->str_cur,len+1);
+    memcpy(str->str_ptr+str->str_cur, ptr, len+1);
     str->str_cur += len;
     str->str_nok = 0;          /* invalidate number */
     str->str_pok = 1;          /* validate pointer */
@@ -197,7 +197,7 @@ str_new(int len)
     }
     else {
        str = (STR *) safemalloc(sizeof(STR));
-       bzero((char*)str,sizeof(STR));
+       memset((char*)str,0,sizeof(STR));
     }
     if (len)
        GROWSTR(&(str->str_ptr), &(str->str_len), len + 1);
@@ -282,20 +282,21 @@ str_gets(register STR *str, register FILE *fp)
     if (str->str_len <= cnt)           /* make sure we have the room */
        GROWSTR(&(str->str_ptr), &(str->str_len), cnt+1);
     bp = str->str_ptr;                 /* move these two too to registers */
-    ptr = FILE_ptr(fp);
+    ptr = (STDCHAR*)FILE_ptr(fp);
     for (;;) {
        while (--cnt >= 0) {
-           if ((*bp++ = *ptr++) == newline)
+           if ((*bp++ = *ptr++) == newline) {
                if (bp <= str->str_ptr || bp[-2] != '\\')
                    goto thats_all_folks;
                else {
                    line++;
                    bp -= 2;
                }
+           }
        }
        
        FILE_cnt(fp) = cnt;             /* deregisterize cnt and ptr */
-       FILE_ptr(fp) = ptr;
+       FILE_ptr(fp) = (void*)ptr; /* LHS STDCHAR* cast non-portable */
        i = getc(fp);           /* get more characters */
        cnt = FILE_cnt(fp);
        ptr = FILE_ptr(fp);             /* reregisterize cnt and ptr */
@@ -315,7 +316,7 @@ str_gets(register STR *str, register FILE *fp)
 
 thats_all_folks:
     FILE_cnt(fp) = cnt;                        /* put these back or we're in trouble */
-    FILE_ptr(fp) = ptr;
+    FILE_ptr(fp) = (STDCHAR*)ptr;
     *bp = '\0';
     str->str_cur = bp - str->str_ptr;  /* set length */
 
@@ -353,7 +354,7 @@ str_inc(register STR *str)
     }
     for (d = str->str_ptr; *d && *d != '.'; d++) ;
     d--;
-    if (!isdigit(*str->str_ptr) || !isdigit(*d) ) {
+    if (!isDIGIT(*str->str_ptr) || !isDIGIT(*d) ) {
         str_numset(str,atof(str->str_ptr) + 1.0);  /* punt */
        return;
     }
@@ -389,7 +390,7 @@ str_dec(register STR *str)
     }
     for (d = str->str_ptr; *d && *d != '.'; d++) ;
     d--;
-    if (!isdigit(*str->str_ptr) || !isdigit(*d) || (*d == '0' && d == str->str_ptr)) {
+    if (!isDIGIT(*str->str_ptr) || !isDIGIT(*d) || (*d == '0' && d == str->str_ptr)) {
         str_numset(str,atof(str->str_ptr) - 1.0);  /* punt */
        return;
     }