Change 33119 by [EMAIL PROTECTED] on 2008/01/30 10:06:52

        Integrate:
        [ 32689]
        Subject: [PATCH] const'ing in cygwin.c
        From: "Jerry D. Hedden" <[EMAIL PROTECTED]>
        Date: Fri, 21 Dec 2007 09:13:41 -0500
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 32690]
        Subject: [PATCH] C<make translators> -Wwrite-strings clean
        From: "Robin Barker" <[EMAIL PROTECTED]>
        Date: Fri, 21 Dec 2007 14:30:20 -0000
        Message-ID: <[EMAIL PROTECTED]>
        
        [ 32711]
        Remove warning about casting integer to different sized pointer.
        
        [ 32720]
        Subject: PATCH re 32711
        From: "Robin Barker" <[EMAIL PROTECTED]>
        Message-ID: <[EMAIL PROTECTED]>
        Date: Mon, 24 Dec 2007 20:56:13 -0000
        
        "IMO patch 32711 is better implemented using (the existing) NUM2PTR 
macro, as below/attached."
        
        [ 32893]
        Save an upgrade each by first setting the NV on PL_sv_yes and PL_sv_no
        at interpreter construction time.
        
        [ 32912]
         newSV() + sv_upgrade() => newSV_type()
        
        [ 32947]
        Subject: [PATCH ext/POSIX/POSIX.xs]
        From: "Robin Barker" <[EMAIL PROTECTED]>
        Date: Thu, 10 Jan 2008 18:50:12 -0000
        Message-ID: <[EMAIL PROTECTED]>
        
        More consting.
        
        [ 32960]
        __DATE__ and __TIME__ are both string literals, so we can concatentate
        them, rather than formating them via %s.
        
        [ 32994]
        Remove commented out code from S_validate_suid()
        
        [ 32996]
        Remove commented out declaration from S_validate_suid()
        
        [ 33036]
        Remove code obsoleted by change 18.

Affected files ...

... //depot/maint-5.10/perl/cygwin/cygwin.c#2 integrate
... //depot/maint-5.10/perl/ext/POSIX/POSIX.xs#2 integrate
... //depot/maint-5.10/perl/perl.c#2 integrate
... //depot/maint-5.10/perl/pp_ctl.c#2 integrate
... //depot/maint-5.10/perl/pp_hot.c#2 integrate
... //depot/maint-5.10/perl/x2p/Makefile.SH#2 integrate
... //depot/maint-5.10/perl/x2p/a2p.c#2 integrate
... //depot/maint-5.10/perl/x2p/a2p.h#2 integrate
... //depot/maint-5.10/perl/x2p/a2py.c#2 integrate
... //depot/maint-5.10/perl/x2p/str.c#2 integrate
... //depot/maint-5.10/perl/x2p/str.h#2 integrate
... //depot/maint-5.10/perl/x2p/util.c#2 integrate
... //depot/maint-5.10/perl/x2p/util.h#2 integrate
... //depot/maint-5.10/perl/x2p/walk.c#2 integrate

Differences ...

==== //depot/maint-5.10/perl/cygwin/cygwin.c#2 (text) ====
Index: perl/cygwin/cygwin.c
--- perl/cygwin/cygwin.c#1~32694~       2007-12-22 01:23:09.000000000 -0800
+++ perl/cygwin/cygwin.c        2008-01-30 02:06:52.000000000 -0800
@@ -83,7 +83,8 @@
 do_spawn (char *cmd)
 {
     dTHX;
-    char **a,*s,*metachars = "$&*(){}[]'\";\\?>|<~`\n";
+    char const **a;
+    char *s,*metachars = "$&*(){}[]'\";\\?>|<~`\n";
     const char *command[4];
 
     while (*cmd && isSPACE(*cmd))
@@ -121,7 +122,7 @@
            return do_spawnvp("sh",command);
        }
 
-    Newx (PL_Argv,(s-cmd)/2+2,char*);
+    Newx (PL_Argv,(s-cmd)/2+2,const char*);
     PL_Cmd=savepvn (cmd,s-cmd);
     a=PL_Argv;
     for (s=PL_Cmd; *s;) {

==== //depot/maint-5.10/perl/ext/POSIX/POSIX.xs#2 (text) ====
Index: perl/ext/POSIX/POSIX.xs
--- perl/ext/POSIX/POSIX.xs#1~32694~    2007-12-22 01:23:09.000000000 -0800
+++ perl/ext/POSIX/POSIX.xs     2008-01-30 02:06:52.000000000 -0800
@@ -386,7 +386,7 @@
 #endif
 
 static int
-not_here(char *s)
+not_here(const char *s)
 {
     croak("POSIX::%s not implemented on this architecture", s);
     return -1;
@@ -1662,7 +1662,7 @@
 
 void
 strtoul(str, base = 0)
-       char *          str
+       const char *    str
        int             base
     PREINIT:
        unsigned long num;

==== //depot/maint-5.10/perl/perl.c#2 (text) ====
Index: perl/perl.c
--- perl/perl.c#1~32694~        2007-12-22 01:23:09.000000000 -0800
+++ perl/perl.c 2008-01-30 02:06:52.000000000 -0800
@@ -301,14 +301,14 @@
     sv_setpv(&PL_sv_no,PL_No);
     /* value lookup in void context - happens to have the side effect
        of caching the numeric forms.  */
-    SvIV(&PL_sv_no);
     SvNV(&PL_sv_no);
+    SvIV(&PL_sv_no);
     SvREADONLY_on(&PL_sv_no);
     SvREFCNT(&PL_sv_no) = (~(U32)0)/2;
 
     sv_setpv(&PL_sv_yes,PL_Yes);
-    SvIV(&PL_sv_yes);
     SvNV(&PL_sv_yes);
+    SvIV(&PL_sv_yes);
     SvREADONLY_on(&PL_sv_yes);
     SvREFCNT(&PL_sv_yes) = (~(U32)0)/2;
 
@@ -1899,12 +1899,10 @@
                                   "\"  Built under %s\\n",OSNAME);
 #ifdef __DATE__
 #  ifdef __TIME__
-                   Perl_sv_catpvf(aTHX_ opts_prog,
-                                  "  Compiled at %s %s\\n\"",__DATE__,
-                                  __TIME__);
+                   sv_catpvs(opts_prog,
+                             "  Compiled at " __DATE__ " " __TIME__ "\\n\"");
 #  else
-                   Perl_sv_catpvf(aTHX_ opts_prog,"  Compiled on %s\\n\"",
-                                  __DATE__);
+                   sv_catpvs(opts_prog, "  Compiled on " __DATE__ "\\n\"");
 #  endif
 #endif
                    sv_catpvs(opts_prog, "; $\"=\"\\n    \"; "
@@ -3867,9 +3865,6 @@
                int fdscript, int suidscript, SV *linestr_sv, PerlIO *rsfp)
 {
     dVAR;
-#ifdef IAMSUID
-    /* int which; */
-#endif /* IAMSUID */
 
     /* do we need to emulate setuid on scripts? */
 
@@ -4234,13 +4229,6 @@
     /* PSz 11 Nov 03
      * Keep original arguments: suidperl already has fd script.
      */
-/*  for (which = 1; PL_origargv[which] && PL_origargv[which] != scriptname; 
which++) ; */
-/*  if (!PL_origargv[which]) {                                         */
-/*     errno = EPERM;                                                  */
-/*     Perl_croak(aTHX_ "Permission denied\n");                        */
-/*  }                                                                  */
-/*  PL_origargv[which] = savepv(Perl_form(aTHX_ "/dev/fd/%d/%s",       */
-/*                               PerlIO_fileno(rsfp), PL_origargv[which]));    
*/
 #  if defined(HAS_FCNTL) && defined(F_SETFD)
     fcntl(PerlIO_fileno(rsfp),F_SETFD,0);      /* ensure no close-on-exec */
 #  endif

==== //depot/maint-5.10/perl/pp_ctl.c#2 (text) ====
Index: perl/pp_ctl.c
--- perl/pp_ctl.c#1~32694~      2007-12-22 01:23:09.000000000 -0800
+++ perl/pp_ctl.c       2008-01-30 02:06:52.000000000 -0800
@@ -1884,7 +1884,6 @@
     }
     else {
        cx->blk_loop.iterary = PL_curstack;
-       AvFILLp(PL_curstack) = SP - PL_stack_base;
        if (PL_op->op_private & OPpITER_REVERSED) {
            cx->blk_loop.itermax = MARK - PL_stack_base + 1;
            cx->blk_loop.iterix = cx->blk_oldsp + 1;
@@ -3221,8 +3220,7 @@
        if (vms_unixname)
 #endif
        {
-           namesv = newSV(0);
-           sv_upgrade(namesv, SVt_PV);
+           namesv = newSV_type(SVt_PV);
            for (i = 0; i <= AvFILL(ar); i++) {
                SV * const dirsv = *av_fetch(ar, i, TRUE);
 

==== //depot/maint-5.10/perl/pp_hot.c#2 (text) ====
Index: perl/pp_hot.c
--- perl/pp_hot.c#1~32694~      2007-12-22 01:23:09.000000000 -0800
+++ perl/pp_hot.c       2008-01-30 02:06:52.000000000 -0800
@@ -1327,7 +1327,8 @@
             && !SvROK(TARG))   /* Cannot trust since INTUIT cannot guess ^ */
            goto yup;
     }
-    if (CALLREGEXEC(rx, (char*)s, (char *)strend, (char*)truebase, minmatch, 
TARG, INT2PTR(void*, gpos), r_flags))
+    if (CALLREGEXEC(rx, (char*)s, (char *)strend, (char*)truebase,
+                    minmatch, TARG, NUM2PTR(void*, gpos), r_flags))
     {
        PL_curpm = pm;
        if (dynpm->op_pmflags & PMf_ONCE) {

==== //depot/maint-5.10/perl/x2p/Makefile.SH#2 (xtext) ====
Index: perl/x2p/Makefile.SH
--- perl/x2p/Makefile.SH#1~32694~       2007-12-22 01:23:09.000000000 -0800
+++ perl/x2p/Makefile.SH        2008-01-30 02:06:52.000000000 -0800
@@ -124,6 +124,9 @@
            -e 's/^yynewerror://' \
            -e 's/^    goto yynewerror;//' \
            -e 's|^static char yysccsid\(.*\)|/* static char yysccsid\1 */|' \
+           -e 's/^\(char \*yyname\[\]\)/const \1/' \
+           -e 's/^\(char \*yyrule\[\]\)/const \1/' \
+           -e 's/^\(    register\) \(char \*yys;\)/\1 const \2/' \
            < y.tab.c > a2p.c
 
 FORCE:

==== //depot/maint-5.10/perl/x2p/a2p.c#2 (text) ====
Index: perl/x2p/a2p.c
--- perl/x2p/a2p.c#1~32694~     2007-12-22 01:23:09.000000000 -0800
+++ perl/x2p/a2p.c      2008-01-30 02:06:52.000000000 -0800
@@ -1984,7 +1984,7 @@
 #endif
 #define YYMAXTOKEN 306
 #if YYDEBUG
-char *yyname[] = {
+const char *yyname[] = {
 
"end-of-file",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
 
0,0,0,"'%'",0,0,"'('","')'","'*'","'+'","','","'-'",0,"'/'",0,0,0,0,0,0,0,0,0,0,
 
"':'","';'","'<'",0,"'>'","'?'",0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
@@ -1999,7 +1999,7 @@
 "DELETE","ASGNOP","OROR","ANDAND","NUMBER","VAR","SUBSTR","INDEX","MATCHOP",
 "RELOP","OR","STRING","UMINUS","NOT","INCR","DECR","FIELD","VFIELD","SVFIELD",
 };
-char *yyrule[] = {
+const char *yyrule[] = {
 "$accept : program",
 "program : junk hunks",
 "begin : BEGIN '{' maybe states '}' junk",
@@ -2193,7 +2193,7 @@
 {
     register int yym, yyn, yystate;
 #if YYDEBUG
-    register char *yys;
+    register const char *yys;
 
     if ((yys = getenv("YYDEBUG")))
     {

==== //depot/maint-5.10/perl/x2p/a2p.h#2 (text) ====
Index: perl/x2p/a2p.h
--- perl/x2p/a2p.h#1~32694~     2007-12-22 01:23:09.000000000 -0800
+++ perl/x2p/a2p.h      2008-01-30 02:06:52.000000000 -0800
@@ -252,7 +252,7 @@
 #define OSTAR          88
 
 #ifdef DOINIT
-char *opname[] = {
+const char *opname[] = {
     "0",
     "PROG",
     "JUNK",
@@ -345,7 +345,7 @@
     "89"
 };
 #else
-extern char *opname[];
+extern const char *opname[];
 #endif
 
 EXT int mop INIT(1);
@@ -370,8 +370,8 @@
 
 /* A string is TRUE if not "" or "0". */
 #define True(val) (tmps = (val), (*tmps && !(*tmps == '0' && !tmps[1])))
-EXT char *Yes INIT("1");
-EXT char *No INIT("");
+EXT const char *Yes INIT("1");
+EXT const char *No INIT("");
 
 #define str_get(str) (Str = (str), (Str->str_pok ? Str->str_ptr : 
str_2ptr(Str)))
 EXT STR *Str;
@@ -397,8 +397,8 @@
 int rememberargs ( int arg );
 char * scannum ( char *s );
 char * scanpat ( char *s );
-int string ( char *ptr, int len );
-void yyerror ( char *s );
+int string ( const char *ptr, int len );
+void yyerror ( const char *s );
 int yylex ( void );
 
 EXT int line INIT(0);

==== //depot/maint-5.10/perl/x2p/a2py.c#2 (text) ====
Index: perl/x2p/a2py.c
--- perl/x2p/a2py.c#1~32694~    2007-12-22 01:23:09.000000000 -0800
+++ perl/x2p/a2py.c     2008-01-30 02:06:52.000000000 -0800
@@ -18,8 +18,8 @@
 #endif
 #include "util.h"
 
-char *filename;
-char *myname;
+const char *filename;
+const char *myname;
 
 int checkers = 0;
 
@@ -59,7 +59,7 @@
 #endif
 
 int
-main(register int argc, register char **argv, register char **env)
+main(register int argc, register const char **argv, register const char **env)
 {
     register STR *str;
     int i;
@@ -126,7 +126,6 @@
     }
     filename = savestr(argv[0]);
 
-    filename = savestr(argv[0]);
     if (strEQ(filename,"-"))
        argv[0] = "";
     if (!*argv[0])
@@ -562,7 +561,7 @@
        else if (strEQ(d,"function"))
            XTERM(FUNCTION);
        if (strEQ(d,"FILENAME"))
-           d = "ARGV";
+           ID("ARGV");
        if (strEQ(d,"foreach"))
            *d = toUPPER(*d);
        else if (strEQ(d,"format"))
@@ -666,14 +665,14 @@
        SNARFWORD;
        if (strEQ(d,"ORS")) {
            saw_ORS = TRUE;
-           d = "\\";
+           ID("\\");
        }
        if (strEQ(d,"OFS")) {
            saw_OFS = TRUE;
-           d = ",";
+           ID(",");
        }
        if (strEQ(d,"OFMT")) {
-           d = "#";
+           ID("#");
        }
        if (strEQ(d,"open"))
            *d = toUPPER(*d);
@@ -701,8 +700,8 @@
     case 'r': case 'R':
        SNARFWORD;
        if (strEQ(d,"RS")) {
-           d = "/";
            saw_RS = TRUE;
+           ID("/");
        }
        if (strEQ(d,"rand")) {
            yylval = ORAND;
@@ -743,7 +742,7 @@
            XTERM(FUN1);
        }
        if (strEQ(d,"SUBSEP")) {
-           d = ";";
+           ID(";");
        }
        if (strEQ(d,"sin")) {
            yylval = OSIN;
@@ -878,7 +877,7 @@
 }
 
 void
-yyerror(char *s)
+yyerror(const char *s)
 {
     fprintf(stderr,"%s in file %s at line %d\n",
       s,filename,line);
@@ -921,7 +920,7 @@
 }
 
 int
-string(char *ptr, int len)
+string(const char *ptr, int len)
 {
     int retval = mop;
 

==== //depot/maint-5.10/perl/x2p/str.c#2 (text) ====
Index: perl/x2p/str.c
--- perl/x2p/str.c#1~32694~     2007-12-22 01:23:09.000000000 -0800
+++ perl/x2p/str.c      2008-01-30 02:06:52.000000000 -0800
@@ -25,7 +25,7 @@
     register char *s;
 
     if (!str)
-       return "";
+       return (char *)"";      /* probably safe - won't be written to */
     GROWSTR(&(str->str_ptr), &(str->str_len), 24);
     s = str->str_ptr;
     if (str->str_nok) {
@@ -56,7 +56,7 @@
 }
 
 void
-str_nset(register STR *str, register char *ptr, register int len)
+str_nset(register STR *str, register const char *ptr, register int len)
 {
     GROWSTR(&(str->str_ptr), &(str->str_len), len + 1);
     memcpy(str->str_ptr,ptr,len);
@@ -67,7 +67,7 @@
 }
 
 void
-str_set(register STR *str, register char *ptr)
+str_set(register STR *str, register const char *ptr)
 {
     register int len;
 
@@ -82,7 +82,7 @@
 }
 
 void
-str_ncat(register STR *str, register char *ptr, register int len)
+str_ncat(register STR *str, register const char *ptr, register int len)
 {
     if (!(str->str_pok))
        str_2ptr(str);
@@ -104,7 +104,7 @@
 }
 
 void
-str_cat(register STR *str, register char *ptr)
+str_cat(register STR *str, register const char *ptr)
 {
     register int len;
 
@@ -250,7 +250,7 @@
 }
 
 STR *
-str_make(char *s)
+str_make(const char *s)
 {
     register STR *str = str_new(0);
 

==== //depot/maint-5.10/perl/x2p/str.h#2 (text) ====
Index: perl/x2p/str.h
--- perl/x2p/str.h#1~32694~     2007-12-22 01:23:09.000000000 -0800
+++ perl/x2p/str.h      2008-01-30 02:06:52.000000000 -0800
@@ -29,15 +29,15 @@
 EXT long tmps_max INIT(-1);
 
 char * str_2ptr ( STR *str );
-void str_cat ( STR *str, char *ptr );
+void str_cat ( STR *str, const char *ptr );
 void str_free ( STR *str );
 char * str_gets ( STR *str, FILE *fp );
 int str_len ( STR *str );
-STR * str_make ( char *s );
-void str_ncat ( STR *str, char *ptr, int len );
+STR * str_make ( const char *s );
+void str_ncat ( STR *str, const char *ptr, int len );
 STR * str_new ( int len );
-void str_nset ( STR *str, char *ptr, int len );
+void str_nset ( STR *str, const char *ptr, int len );
 void str_numset ( STR *str, double num );
 void str_scat ( STR *dstr, STR *sstr );
-void str_set ( STR *str, char *ptr );
+void str_set ( STR *str, const char *ptr );
 void str_sset ( STR *dstr, STR *sstr );

==== //depot/maint-5.10/perl/x2p/util.c#2 (text) ====
Index: perl/x2p/util.c
--- perl/x2p/util.c#1~32694~    2007-12-22 01:23:09.000000000 -0800
+++ perl/x2p/util.c     2008-01-30 02:06:52.000000000 -0800
@@ -119,9 +119,10 @@
 /* return ptr to little string in big string, NULL if not found */
 
 char *
-instr(char *big, char *little)
+instr(char *big, const char *little)
 {
-    register char *t, *s, *x;
+    register char *t, *x;
+    register const char *s;
 
     for (t = big; *t; t++) {
        for (x=t,s=little; *s; x++,s++) {
@@ -139,7 +140,7 @@
 /* copy a string to a safe spot */
 
 char *
-savestr(char *str)
+savestr(const char *str)
 {
     register char * const newaddr = (char *) 
safemalloc((MEM_SIZE)(strlen(str)+1));
 

==== //depot/maint-5.10/perl/x2p/util.h#2 (text) ====
Index: perl/x2p/util.h
--- perl/x2p/util.h#1~32694~    2007-12-22 01:23:09.000000000 -0800
+++ perl/x2p/util.h     2008-01-30 02:06:52.000000000 -0800
@@ -21,8 +21,8 @@
 char * cpy2 ( char *to, char *from, int delim );
 char * cpytill ( char *to, char *from, int delim );
 void growstr ( char **strptr, int *curlen, int newlen );
-char * instr ( char *big, char *little );
-char * savestr ( char *str );
+char * instr ( char *big, const char *little );
+char * savestr ( const char *str );
 void fatal ( const char *pat, ... );
 void warn  ( const char *pat, ... );
 int prewalk ( int numit, int level, int node, int *numericptr );

==== //depot/maint-5.10/perl/x2p/walk.c#2 (text) ====
Index: perl/x2p/walk.c
--- perl/x2p/walk.c#1~32694~    2007-12-22 01:23:09.000000000 -0800
+++ perl/x2p/walk.c     2008-01-30 02:06:52.000000000 -0800
@@ -19,9 +19,9 @@
 bool saw_argv0 = FALSE;
 bool saw_fh = FALSE;
 int maxtmp = 0;
-char *lparen;
-char *rparen;
-char *limit;
+const char *lparen;
+const char *rparen;
+const char *limit;
 STR *subs;
 STR *curargs = Nullstr;
 
@@ -36,7 +36,7 @@
 #ifdef NETWARE
 char *savestr(char *str);
 char *cpytill(register char *to, register char *from, register int delim);
-char *instr(char *big, char *little);
+char *instr(char *big, const char *little);
 #endif
 
 STR *
@@ -838,7 +838,9 @@
        len = type >> 8;
        type &= 255;
        tmp3str = str_new(0);
-       if (type == OSTR) {
+       {
+         const char *s;
+         if (type == OSTR) {
            tmp2str=walk(1,level,ops[ops[node+2].ival+1].ival,&numarg,P_MIN);
            for (t = tmp2str->str_ptr, d=tokenbuf; *t; d++,t++) {
                if (*t == '&')
@@ -849,18 +851,19 @@
            }
            *d = '\0';
            str_set(tmp2str,tokenbuf);
-           s = (char *) (gsub ? "/g" : "/");
-       }
-       else {
+           s = (gsub ? "/g" : "/");
+         }
+         else {
            tmp2str=walk(1,level,ops[node+2].ival,&numarg,P_MIN);
            str_set(tmp3str,"($s_ = '\"'.(");
            str_scat(tmp3str,tmp2str);
            str_cat(tmp3str,").'\"') =~ s/&/\\$&/g, ");
            str_set(tmp2str,"eval $s_");
-           s = (char *) (gsub ? "/ge" : "/e");
+           s = (gsub ? "/ge" : "/e");
            i++;
+         }
+         str_cat(tmp2str,s);
        }
-       str_cat(tmp2str,s);
        type = ops[ops[node+1].ival].ival;
        len = type >> 8;
        type &= 255;
@@ -909,8 +912,9 @@
        break;
     case OSTR:
        tmpstr = walk(1,level,ops[node+1].ival,&numarg,P_MIN);
-       s = "'";
-       for (t = tmpstr->str_ptr, d=tokenbuf; *t; d++,t++) {
+       {
+         const char *s = "'";
+         for (t = tmpstr->str_ptr, d=tokenbuf; *t; d++,t++) {
            if (*t == '\'')
                s = "\"";
            else if (*t == '\\') {
@@ -924,13 +928,14 @@
                }
            }
            *d = *t + 128;
+         }
+         *d = '\0';
+         str = str_new(0);
+         str_set(str,s);
+         str_cat(str,tokenbuf);
+         str_free(tmpstr);
+         str_cat(str,s);
        }
-       *d = '\0';
-       str = str_new(0);
-       str_set(str,s);
-       str_cat(str,tokenbuf);
-       str_free(tmpstr);
-       str_cat(str,s);
        break;
     case ODEFINED:
        prec = P_UNI;
@@ -1208,7 +1213,7 @@
        }
        tmpstr = walk(1+(type==OPRINT),level,ops[node+1].ival,&numarg,P_MIN);
        if (!*tmpstr->str_ptr && lval_field) {
-           t = (char*)(saw_OFS ? "$," : "' '");
+           const char *t = (saw_OFS ? "$," : "' '");
            if (split_to_array) {
                sprintf(tokenbuf,"join(%s,@Fld)",t);
                str_cat(tmpstr,tokenbuf);
@@ -1284,7 +1289,7 @@
            tmpstr = str_new(0);
        if (!tmpstr->str_ptr || !*tmpstr->str_ptr) {
            if (lval_field) {
-               t = (char*)(saw_OFS ? "$," : "' '");
+               const char *t = (saw_OFS ? "$," : "' '");
                if (split_to_array) {
                    sprintf(tokenbuf,"join(%s,@Fld)",t);
                    str_cat(tmpstr,tokenbuf);
End of Patch.

Reply via email to