X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=win32%2Fwin32.c;h=3740e7054d86c6eed1a87af895f4d80eb2c3690a;hb=25ca88e0cbd385e70d7ea2ee4f8a34a9ff7bcc17;hp=ab653c4d5976eb7f47122084a78ed153f60ad674;hpb=0e06f75d89a762be9731eb40ee14d8535e1ae184;p=p5sagit%2Fp5-mst-13.2.git diff --git a/win32/win32.c b/win32/win32.c index ab653c4..3740e70 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -92,8 +92,8 @@ int _fcloseall(); static void get_shell(void); static long tokenize(const char *str, char **dest, char ***destv); -static int do_spawn2(pTHX_ char *cmd, int exectype); -static BOOL has_shell_metachars(char *ptr); +static int do_spawn2(pTHX_ const char *cmd, int exectype); +static BOOL has_shell_metachars(const char *ptr); static long filetime_to_clock(PFILETIME ft); static BOOL filetime_from_time(PFILETIME ft, time_t t); static char * get_emd_part(SV **leading, char *trailing, ...); @@ -349,7 +349,7 @@ win32_get_vendorlib(const char *pl) } static BOOL -has_shell_metachars(char *ptr) +has_shell_metachars(const char *ptr) { int inquote = 0; char quote = '\0'; @@ -394,7 +394,7 @@ has_shell_metachars(char *ptr) * the library functions will get the correct environment */ PerlIO * -Perl_my_popen(pTHX_ char *cmd, char *mode) +Perl_my_popen(pTHX_ const char *cmd, const char *mode) { #ifdef FIXCMD #define fixcmd(x) { \ @@ -472,8 +472,8 @@ tokenize(const char *str, char **dest, char ***destv) int slen = strlen(str); register char *ret; register char **retv; - New(1307, ret, slen+2, char); - New(1308, retv, (slen+3)/2, char*); + Newx(ret, slen+2, char); + Newx(retv, (slen+3)/2, char*); retstart = ret; retvstart = retv; @@ -542,7 +542,7 @@ Perl_do_aspawn(pTHX_ SV *really, SV **mark, SV **sp) return -1; get_shell(); - New(1306, argv, (sp - mark) + w32_perlshell_items + 2, char*); + Newx(argv, (sp - mark) + w32_perlshell_items + 2, char*); if (SvNIOKp(*(mark+1)) && !SvPOKp(*(mark+1))) { ++mark; @@ -618,7 +618,7 @@ find_next_space(const char *s) } static int -do_spawn2(pTHX_ char *cmd, int exectype) +do_spawn2(pTHX_ const char *cmd, int exectype) { char **a; char *s; @@ -630,8 +630,8 @@ do_spawn2(pTHX_ char *cmd, int exectype) /* Save an extra exec if possible. See if there are shell * metacharacters in it */ if (!has_shell_metachars(cmd)) { - New(1301,argv, strlen(cmd) / 2 + 2, char*); - New(1302,cmd2, strlen(cmd) + 1, char); + Newx(argv, strlen(cmd) / 2 + 2, char*); + Newx(cmd2, strlen(cmd) + 1, char); strcpy(cmd2, cmd); a = argv; for (s = cmd2; *s;) { @@ -668,10 +668,10 @@ do_spawn2(pTHX_ char *cmd, int exectype) char **argv; int i = -1; get_shell(); - New(1306, argv, w32_perlshell_items + 2, char*); + Newx(argv, w32_perlshell_items + 2, char*); while (++i < w32_perlshell_items) argv[i] = w32_perlshell_vec[i]; - argv[i++] = cmd; + argv[i++] = (char *)cmd; argv[i] = Nullch; switch (exectype) { case EXECF_SPAWN: @@ -721,7 +721,7 @@ Perl_do_spawn_nowait(pTHX_ char *cmd) } bool -Perl_do_exec(pTHX_ char *cmd) +Perl_do_exec(pTHX_ const char *cmd) { do_spawn2(aTHX_ cmd, EXECF_EXEC); return FALSE; @@ -756,7 +756,7 @@ win32_opendir(const char *filename) return NULL; /* Get us a DIR structure */ - Newz(1303, dirp, 1, DIR); + Newxz(dirp, 1, DIR); /* Create the search pattern */ strcpy(scanname, filename); @@ -817,7 +817,7 @@ win32_opendir(const char *filename) dirp->size = 128; else dirp->size = idx; - New(1304, dirp->start, dirp->size, char); + Newx(dirp->start, dirp->size, char); strcpy(dirp->start, ptr); dirp->nfiles++; dirp->end = dirp->curr = dirp->start; @@ -1481,7 +1481,7 @@ win32_putenv(const char *name) if (name) { if (USING_WIDE()) { length = strlen(name)+1; - New(1309,wCuritem,length,WCHAR); + Newx(wCuritem,length,WCHAR); A2WHELPER(name, wCuritem, length*sizeof(WCHAR)); wVal = wcschr(wCuritem, '='); if (wVal) { @@ -1492,7 +1492,7 @@ win32_putenv(const char *name) Safefree(wCuritem); } else { - New(1309,curitem,strlen(name)+1,char); + Newx(curitem,strlen(name)+1,char); strcpy(curitem, name); val = strchr(curitem, '='); if (val) { @@ -2597,7 +2597,7 @@ DllExport Off_t win32_ftell(FILE *pf) { #if defined(WIN64) || defined(USE_LARGE_FILES) -#if defined(__BORLAND__) /* buk */ +#if defined(__BORLANDC__) /* buk */ return win32_tell( fileno( pf ) ); #else fpos_t pos; @@ -2642,7 +2642,7 @@ win32_fseek(FILE *pf, Off_t offset,int origin) return fsetpos(pf, &offset); #endif #else - return fseek(pf, offset, origin); + return fseek(pf, (long)offset, origin); #endif } @@ -3192,7 +3192,7 @@ finish: win32_lseek(fd, cur, SEEK_SET); return retval; #else - return chsize(fd, size); + return chsize(fd, (long)size); #endif } @@ -3218,7 +3218,7 @@ win32_lseek(int fd, Off_t offset, int origin) return _lseeki64(fd, offset, origin); #endif #else - return lseek(fd, offset, origin); + return lseek(fd, (long)offset, origin); #endif } @@ -3651,7 +3651,7 @@ create_command_line(char *cname, STRLEN clen, const char * const *args) DEBUG_p(PerlIO_printf(Perl_debug_log, "\n")); argc = index; - New(1310, cmd, len, char); + Newx(cmd, len, char); ptr = cmd; if (bat_file && !IsWin95()) { @@ -3755,7 +3755,7 @@ qualified_path(const char *cmd) /* worst case: PATH is a single directory; we need additional space * to append "/", ".exe" and trailing "\0" */ - New(0, fullcmd, (pathstr ? strlen(pathstr) : 0) + cmdlen + 6, char); + Newx(fullcmd, (pathstr ? strlen(pathstr) : 0) + cmdlen + 6, char); curfullcmd = fullcmd; while (1) { @@ -3870,7 +3870,7 @@ win32_get_childdir(void) GetCurrentDirectoryA(MAX_PATH+1, szfilename); } - New(0, ptr, strlen(szfilename)+1, char); + Newx(ptr, strlen(szfilename)+1, char); strcpy(ptr, szfilename); return ptr; } @@ -3918,7 +3918,7 @@ win32_spawnvp(int mode, const char *cmdname, const char *const *argv) /* if command name contains dquotes, must remove them */ if (strchr(cname, '"')) { cmd = cname; - New(0,cname,clen+1,char); + Newx(cname,clen+1,char); clen = 0; while (*cmd) { if (*cmd != '"') { @@ -4064,9 +4064,17 @@ win32_execv(const char *cmdname, const char *const *argv) /* if this is a pseudo-forked child, we just want to spawn * the new program, and return */ if (w32_pseudo_id) +# ifdef __BORLANDC__ return spawnv(P_WAIT, cmdname, (char *const *)argv); +# else + return spawnv(P_WAIT, cmdname, argv); +# endif #endif +#ifdef __BORLANDC__ return execv(cmdname, (char *const *)argv); +#else + return execv(cmdname, argv); +#endif } DllExport int @@ -4086,7 +4094,11 @@ win32_execvp(const char *cmdname, const char *const *argv) return status; } #endif +#ifdef __BORLANDC__ return execvp(cmdname, (char *const *)argv); +#else + return execvp(cmdname, argv); +#endif } DllExport void @@ -5121,11 +5133,11 @@ Perl_sys_intern_init(pTHX) w32_perlshell_vec = (char**)NULL; w32_perlshell_items = 0; w32_fdpid = newAV(); - New(1313, w32_children, 1, child_tab); + Newx(w32_children, 1, child_tab); w32_num_children = 0; # ifdef USE_ITHREADS w32_pseudo_id = 0; - New(1313, w32_pseudo_children, 1, child_tab); + Newx(w32_pseudo_children, 1, child_tab); w32_num_pseudo_children = 0; # endif w32_timerid = 0; @@ -5178,9 +5190,9 @@ Perl_sys_intern_dup(pTHX_ struct interp_intern *src, struct interp_intern *dst) dst->perlshell_vec = (char**)NULL; dst->perlshell_items = 0; dst->fdpid = newAV(); - Newz(1313, dst->children, 1, child_tab); + Newxz(dst->children, 1, child_tab); dst->pseudo_id = 0; - Newz(1313, dst->pseudo_children, 1, child_tab); + Newxz(dst->pseudo_children, 1, child_tab); dst->timerid = 0; dst->poll_count = 0; Copy(src->sigtable,dst->sigtable,SIG_SIZE,Sighandler_t); @@ -5208,7 +5220,7 @@ win32_argv2utf8(int argc, char** argv) if (lpwStr && argc) { while (argc--) { length = WideCharToMultiByte(CP_UTF8, 0, lpwStr[--wargc], -1, NULL, 0, NULL, NULL); - Newz(0, psz, length, char); + Newxz(psz, length, char); WideCharToMultiByte(CP_UTF8, 0, lpwStr[wargc], -1, psz, length, NULL, NULL); argv[argc] = psz; }