]> granicus.if.org Git - php/commitdiff
NetWare LibC has pipe/popen support
authorAnantha Kesari H Y <hyanantha@php.net>
Wed, 29 Jun 2005 08:59:30 +0000 (08:59 +0000)
committerAnantha Kesari H Y <hyanantha@php.net>
Wed, 29 Jun 2005 08:59:30 +0000 (08:59 +0000)
netware/pipe.c [deleted file]

diff --git a/netware/pipe.c b/netware/pipe.c
deleted file mode 100644 (file)
index c302fdf..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-/*
- * FILENAME            :       pipe.c
- * DESCRIPTION :       Functions to implement pipes on NetWare.
- * Author              :       Anantha Kesari H Y, Venkat Raghavan S, Srivathsa M
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "netware/pipe.h"
-#include "netware/mktemp.h"
-
-
-/* Following definitions unavailable in LibC, hence borrowed from CLib */
-#define P_WAIT      0
-#define P_NOWAIT    1
-
-#define WHITESPACE  " \t"
-#define MAX_ARGS    10
-
-
-FILE* popen(const char* commandline, const char* mode)
-{
-       int               err, count;
-       char              pszPipestr[32] = {'\0'};
-       char *command = NULL, *argv[MAX_ARGS] = {'\0'};
-       int fd = -1;
-       fd_set myfds;
-       wiring_t wiring;
-       pid_t pid=0;
-       FILE *fp=NULL;
-       char *ptr = NULL;
-       int ptrLen = 0, argc = 0, i = 0;
-
-
-       /* Get a temporary name */
-       (void) tmpnam(strecpy(pszPipestr,  "PHP/php$pipe/"));
-
-       wiring.infd=FD_UNUSED;
-       wiring.outfd=FD_UNUSED;
-       wiring.errfd=FD_UNUSED;
-
-       /* Open a pipe */
-       if ( *mode=='r') {
-               fd = pipe_open (pszPipestr, O_RDONLY);
-               if (fd == -1)
-                       return NULL;
-
-               wiring.outfd=fd;
-       } else if (*mode=='w') {
-               fd = pipe_open (pszPipestr, O_WRONLY);
-               if (fd == -1)
-                       return NULL;
-
-               wiring.infd=fd;
-       } else {
-               consoleprintf ("Unsupported pipe open mode \n");
-               return NULL;
-       }
-
-       /* Get the file pointer */
-       fp = fdopen(fd, mode);
-       if (fp == NULL) {
-               consoleprintf ("Failure in fdopen \n");
-               close (fd);
-               return NULL;
-       }
-
-       /* Separate commandline string into words */
-       ptr = strtok((char*)commandline, WHITESPACE);
-       ptrLen = strlen(ptr);
-
-       /* Get the command */
-       command = (char*)malloc(ptrLen + 1);
-       if(command == NULL) {
-               consoleprintf ("Failure in memory allocation \n");
-               close (fd);
-               fclose (fp);
-               return NULL;
-       }
-       strcpy (command, ptr);
-
-       /* Command as the first argument into prcessve */
-       argv[argc] = (char*)malloc(ptrLen + 1);
-       if(argv[argc] == NULL) {
-               consoleprintf ("Failure in memory allocation \n");
-               close (fd);
-               fclose (fp);
-               if(command) {
-                       free(command);
-                       command = NULL;
-               }
-               return NULL;
-       }
-       strcpy (argv[argc], ptr);
-       argc++;
-
-       /* Get more arguments if any to be passed to prcessve */
-       ptr = strtok(NULL, WHITESPACE);
-       while (ptr && (argc < MAX_ARGS))
-       {
-               ptrLen = strlen(ptr);
-
-               argv[argc] = (char*)malloc(ptrLen + 1);
-               if(argv[argc] == NULL) {
-                       consoleprintf ("Failure in memory allocation \n");
-                       close (fd);
-                       fclose (fp);
-                       if(command) {
-                               free(command);
-                               command = NULL;
-                       }
-                       return NULL;
-               }
-               strcpy (argv[argc], ptr);
-               argc++;
-
-               ptr = strtok(NULL, WHITESPACE);
-       }
-       argv[argc] = NULL;
-
-       FD_ZERO(&myfds);
-       FD_SET(fd, &myfds);
-
-       pid = processve(command, PROC_CURRENT_SPACE, NULL, &wiring,
-                                       &myfds, NULL, (const char **)argv );
-       if (pid == -1) {
-               consoleprintf ("Failure in processve call \n");
-               close (fd);
-               fclose(fp);
-               if(command) {
-                       free(command);
-                       command = NULL;
-               }
-               for(i=0; i<argc; i++) {
-                       if(argv[i]) {
-                               free(argv[i]);
-                               argv[i] = NULL;
-                       }
-               }
-               return NULL;
-       }
-
-       close (fd);
-       if(command) {
-               free(command);
-               command = NULL;
-       }
-       for(i=0; i<argc; i++) {
-               if(argv[i]) {
-                       free(argv[i]);
-                       argv[i] = NULL;
-               }
-       }
-
-       return fp;
-}
-
-
-int pclose(FILE* stream)
-{
-       fclose(stream);
-       return 0;
-}
-
-
-
-#if 0
-
-FILE* popen2(const char* commandline, const char* mode)
-{
-    int               err, count, var, replaced;
-    char              **env, pszPipestr[32];
-    NXVmId_t          newVM;
-    NXExecEnvSpec_t   envSpec;
-    char *command = NULL, *argv[MAX_ARGS] = {"\0"};
-    NXHandle_t fd;
-    
-    fd = (NXHandle_t) -1;
-    
-    count = NXGetEnvCount() + 1;  // (add one for NULL)
-    env   = (char **) NXMemAlloc(sizeof(char *) * count, 0);
-    
-    if (!env)
-        return 0;
-    
-    err = NXCopyEnv(env, count);  // ensure NULL added at end
-    if ( *mode='r'){
-        (void) tmpnam(strecpy(pszPipestr,  "PHPPIPE/stdin/"));
-        err = NXFifoOpen(0, pszPipestr, NX_O_RDONLY, 0, &fd);
-        if (err)
-            return 0;
-        
-        envSpec.esStdin.ssType     = NX_OBJ_CONSOLE;
-        envSpec.esStdout.ssType    = NX_OBJ_FIFO;
-        envSpec.esStdout.ssPath    = pszPipestr;
-    }
-    else if (*mode='w') then{
-        (void) tmpnam(strecpy(pszPipestr, "PHPPIPE/stdout/"));
-        err = NXFifoOpen(0, instr, NX_O_WRONLY, 0, &fd);
-        if (err)
-            return 0;
-        envSpec.esStdin.ssType     = NX_OBJ_FIFO;
-        envSpec.esStdout.ssType    = NX_OBJ_CONSOLE;
-               envSpec.esStdin.ssPath     =  pszPipestr;
-    }
-    else
-        consoleprintf ("Unsupported pipe open mode \n");
-    
-    
-    /* Separate commandline string into words */
-    
-    ptr = strtok((char*)commandline, WHITESPACE);
-    ptrLen = strlen(ptr);
-    
-    command = (char*)malloc(ptrLen + 1);
-    strcpy (command, ptr);
-    
-    ptr = strtok(NULL, WHITESPACE);
-    while (ptr && (argc < MAX_ARGS))
-    {
-        ptrLen = strlen(ptr);
-        
-        argv[argc] = (char*)malloc(ptrLen + 1);
-        strcpy (argv[argc], ptr);
-        
-        argc++;
-        
-        ptr = strtok(NULL, WHITESPACE);
-    }
-/*    consoleprintf ("PHP | popen: command = %s\n", command); */
-    
-       //
-
-    envSpec.esArgc             = argc;
-    envSpec.esArgv             = argv;
-    envSpec.esEnv              = env;
-    
-    envSpec.esStderr.ssType    = NX_OBJ_CONSOLE;
-    
-    envSpec.esStdin.ssHandle   =
-        envSpec.esStdout.ssHandle  =
-        envSpec.esStderr.ssHandle  = -1;
-    
-    envSpec.esStdin.ssPathCtx  =
-        envSpec.esStdout.ssPathCtx =
-        envSpec.esStderr.ssPathCtx = NULL;
-    
-    envSpec.esStderr.ssPath    = NULL;
-    
-    err = NXVmSpawn(NULL, command, &envSpec, NX_VM_CREATE_DETACHED, &newVM);
-    return fd;
-    
-}
-
-int pclose2(FILE* stream)
-{
-       NXClose(*(NXHandle_t *)stream);
-    return 0;
-}
-
-FILE* popen1(const char* commandline, const char* mode)
-{
-    char *command = NULL, *argv[MAX_ARGS] = {"\0"};
-       char *tempName = "phpXXXXXX.tmp";
-    char *filePath = NULL;
-    FILE *fp = NULL;
-    char *ptr = NULL;
-    int ptrLen = 0, argc = 0, i = 0;
-
-    /* Check for validity of input parameters */
-    if (!commandline || !mode)
-        return NULL;
-
-    /* Get temporary file name */
-    filePath = mktemp(tempName);
-       if (!filePath)
-               return NULL;
-
-    /* Separate commandline string into words */
-
-    ptr = strtok((char*)commandline, WHITESPACE);
-    ptrLen = strlen(ptr);
-
-    command = (char*)malloc(ptrLen + 1);
-    strcpy (command, ptr);
-
-    ptr = strtok(NULL, WHITESPACE);
-    while (ptr && (argc < MAX_ARGS))
-    {
-        ptrLen = strlen(ptr);
-
-        argv[argc] = (char*)malloc(ptrLen + 1);
-        strcpy (argv[argc], ptr);
-
-        argc++;
-
-        ptr = strtok(NULL, WHITESPACE);
-    }
-/*consoleprintf ("PHP | popen: command = %s\n", command);*/
-    if(strchr(mode,'r') != 0)
-    {
-        /*spawnvp(P_WAIT, command, argv);*/
-
-        fp = fopen(filePath, "r"); /* Get the file handle of the pipe */
-    }
-       else if(strchr(mode,'w') != 0)
-        fp = fopen(filePath, "w"); /* Get the file handle of the pipe */
-
-    /* Free resources */
-    free (command);
-    for (i = 0; i < argc; i++)
-    {
-/*consoleprintf ("%s\t", argv[i]);*/
-        free (argv[i]);
-    }
-/*consoleprintf ("\n");*/
-
-       return fp;  /* Return the file handle.*/
-}
-
-int pclose1(FILE* stream)
-{
-    return (fclose(stream));
-}
-
-# endif