Changeset 60


Ignore:
Timestamp:
Aug 20, 2007, 8:20:30 PM (13 years ago)
Author:
Yuri Dario
Message:

Use popen() for executing scripts, so .cmd/.exe/.sh scripts are supported. Fixes ticket:12 (and probably also ticket:26).

Location:
trunk/samba/source/lib
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/samba/source/lib/smbrun.c

    r39 r60  
    7474        }
    7575
     76#ifdef __EMX__
     77
     78        {
     79                char buf[8192];
     80                int     n, w;
     81                const char *newcmd = sanitize ? escape_shell_string(cmd) : cmd;
     82                if (!newcmd) {
     83                        close(*outfd);
     84                        *outfd = -1;
     85                        return(82);
     86                }
     87                // execute script and capture stdout
     88                FILE* pipe = popen( newcmd, "rb");
     89                if (pipe) {
     90                        // get stdout from pipe
     91                        while( !feof( pipe)) {
     92                                n = fread( buf, 1, 8192, pipe);
     93                                // write to file if required
     94                                if (n>0 && outfd!=NULL)
     95                                        w = write( *outfd, buf, n);
     96                        }
     97                        // close and return status
     98                        pclose( pipe);
     99                        return 0;
     100                }
     101                // error, close files
     102                close(*outfd);
     103                *outfd = -1;
     104                return 83;
     105        }
     106
     107#else
     108
    76109        /* in this method we will exec /bin/sh with the correct
    77110           arguments, after first setting stdout to point at the file */
     
    185218        exit(83);
    186219        return 1;
     220
     221#endif // __EMX__
     222
    187223}
    188224
  • trunk/samba/source/lib/util_str.c

    r44 r60  
    26232623*******************************************************************/
    26242624
    2625 #define INCLUDE_LIST "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_/ \t.,"
     2625#define INCLUDE_LIST "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz_/ \t.,:"
    26262626#define INSIDE_DQUOTE_LIST "$`\n\"\\"
    26272627
Note: See TracChangeset for help on using the changeset viewer.