[BACK]Return to oxlog.c CVS log [TXT][DIR] Up to [local] / OpenXM / src / kxx

Diff for /OpenXM/src/kxx/oxlog.c between version 1.6 and 1.10

version 1.6, 2000/02/09 12:02:56 version 1.10, 2003/11/20 07:18:41
Line 1 
Line 1 
 /*$OpenXM: OpenXM/src/kxx/oxlog.c,v 1.5 2000/01/19 03:13:40 takayama Exp $*/  /*$OpenXM: OpenXM/src/kxx/oxlog.c,v 1.9 2001/05/06 07:53:00 takayama Exp $*/
 #include <stdio.h>  #include <stdio.h>
 #include <signal.h>  #include <signal.h>
 #include <string.h>  #include <string.h>
Line 22 
Line 22 
           2     3            2     3
 */  */
 static int Debug_which = 1;  static int Debug_which = 1;
 char *toFullPath(char *s);  extern char **environ;
 char *which(char *s,char *env);  
 main(int argc, char *argv[]) {  
   sigset_t sss;  
   int i;  
   char *oxname ="???";  
   /* char *env[2];  
   env[0] = NULL;*/  
   sigemptyset(&sss);  
   sigaddset(&sss,SIGINT);  
   sigprocmask(SIG_BLOCK,&sss,NULL);  
   if (argc >= 2) {  
     oxname = argv[1];  
     oxname = toFullPath(oxname);  
   }  
   if (argc == 2) {  
     execl(oxname,oxname,NULL);  
   }else if (argc == 3) {  
     execl(oxname,oxname,argv[2],NULL);  
   }else if (argc == 4) {  
     execl(oxname,oxname,argv[2],argv[3],NULL);  
   }else if (argc == 5) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],NULL);  
   }else if (argc == 6) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],NULL);  
   }else if (argc == 7) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],NULL);  
   }else if (argc == 8) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],NULL);  
   }else if (argc == 9) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],NULL);  
   }else if (argc == 10) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],NULL);  
   }else if (argc == 11) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],NULL);  
   }else if (argc == 12) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11],NULL);  
   }else if (argc == 13) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11], argv[12],NULL);  
   }else if (argc == 14) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11], argv[12],argv[13],NULL);  
   }else if (argc == 15) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11], argv[12],argv[13],argv[14],NULL);  
   }else if (argc == 16) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11], argv[12],argv[13],argv[14],argv[15],NULL);  
   }else if (argc == 17) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11], argv[12],argv[13],argv[14],argv[15],argv[16],NULL);  
   }else if (argc == 18) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11], argv[12],argv[13],argv[14],argv[15],argv[16],argv[17],NULL);  
   }else if (argc == 19) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11], argv[12],argv[13],argv[14],argv[15],argv[16],argv[17],argv[18],NULL);  
   }else if (argc == 20) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11], argv[12],argv[13],argv[14],argv[15],argv[16],argv[17],argv[18],argv[19],NULL);  
   }else if (argc == 21) {  
     execl(oxname,oxname,argv[2],argv[3],argv[4],argv[5],argv[6],  
           argv[7],argv[8],argv[9],argv[10],argv[11], argv[12],argv[13],argv[14],argv[15],argv[16],argv[17],argv[18],argv[19],argv[20],NULL);  
   }else {  
     fprintf(stderr,"Error in oxlog: cannot handle argc=%d\n",argc);  
     fprintf(stderr,"oxname=%s\n",oxname);  
     for (i=0; i<argc; i++) {  
       fprintf(stderr,"argv[%d]=%s ",i,argv[i]);  
     }  
     fprintf(stderr,"\n");  
     fprintf(stderr,"Usage example 1: oxlog /usr/X11R6/bin/xterm -icon -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_asir\n");  
     fprintf(stderr,"      example 2: oxlog /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_asir >& /dev/null\n");  
     exit(10);  
   }  
   fprintf(stderr,"\nError in oxlog: Failed to start the process.\n");  
   fprintf(stderr,"oxname=%s\n",oxname);  
   for (i=0; i<argc; i++) {  
     fprintf(stderr,"argv[%d]=%s ",i,argv[i]);  
   }  
   fprintf(stderr,"\n");  
   exit(20);  
 }  
 mainold1() {  
   sigset_t sss;  
   int i;  
   /* char *env[2];  
   env[0] = NULL;*/  
   sigemptyset(&sss);  
   sigaddset(&sss,SIGINT);  
   sigprocmask(SIG_BLOCK,&sss,NULL);  
   /* for (i=0; i<1000; i++) {  
      sleep(1);  
      printf("Hello\n");  
      }  
      exit(0); */  
   execl("/usr/X11R6/bin/xterm","/usr/X11R6/bin/xterm",  
         "-e","/home/nobuki/kxx/ox","-ox","/home/nobuki/kxx/ox_asir",NULL);  
 /*  execl("/home/nobuki/kxx/ox","/home/nobuki/kxx/ox","-ox","/home/nobuki/kxx/ox_asir",NULL);*/  
 }  
   
 char *toFullPath(char *s) {  
   extern int Debug_which;  
   char *path ="/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/usr/openwin/bin:/usr/X/bin";  
   if (strlen(s) == 0) {  
     return(s);  
   }  
   if (strchr(s,'/') != NULL) return(s);  
   else {  
     s = which(s,getenv("PATH"));  
   }  
   if (s == NULL) {  
         if (Debug_which) fprintf(stderr,"Could not find %s in your search path.\n",s);  
         if (Debug_which) fprintf(stderr,"You path is %s.\n",getenv("PATH"));  
         if (Debug_which) fprintf(stderr,"Trying to find in the path: %s\n",path);  
         s = which(s,path);  
   }  
   return(s);  
 }  
   
 /*which("xterm", getenv("PATH"));*/  /*which("xterm", getenv("PATH"));*/
 char *which(char *prog, char *path_env)  char *which(char *prog, char *path_env)
 {  {
Line 157  char *which(char *prog, char *path_env)
Line 34  char *which(char *prog, char *path_env)
   char *e = alloca(strlen(path_env)+1);    char *e = alloca(strlen(path_env)+1);
   strcpy(e, path_env);    strcpy(e, path_env);
   tok = strtok(e, delim);    tok = strtok(e, delim);
   if (Debug_which) fprintf(stderr,"PATH=%s\n",path_env);    if (Debug_which) {
       fprintf(stderr, "PATH=%s\n", path_env);
     }
   while (tok != NULL) {    while (tok != NULL) {
     char *path = malloc(strlen(tok)+strlen(prog)+2);      char *path = malloc(strlen(tok)+strlen(prog)+2);
     sprintf(path, "%s/%s", tok, prog);      sprintf(path, "%s/%s", tok, prog);
     if (access(path, X_OK&R_OK) == 0) {      if (access(path, X_OK&R_OK) == 0) {
           if (Debug_which) fprintf(stderr,"Found: %s\n",path);        if (Debug_which) {
           fprintf(stderr, "Found: %s\n", path);
         }
       return path;        return path;
     }      }
     free(path);      free(path);
Line 171  char *which(char *prog, char *path_env)
Line 52  char *which(char *prog, char *path_env)
   return NULL;    return NULL;
 }  }
   
   char *toFullPath(char *s)
   {
     extern int Debug_which;
     char *path = "/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/usr/openwin/bin:/usr/X/bin";
     char *s2;
     if (strlen(s) == 0 || strchr(s, '/') != NULL) {
       return s;
     }
     s2 = which(s, getenv("PATH"));
     if (s2 == NULL) {
       if (Debug_which) {
         fprintf(stderr, "Could not find arg[1] in your search path.\n");
         fprintf(stderr, "You path is %s.\n", getenv("PATH"));
         fprintf(stderr, "Trying to find in the path: %s\n", path);
       }
       s2 = which(s, path);
       /* Why? */
     }
     return s2;
   }
   
   int main(int argc, char *argv[])
   {
     sigset_t sss;
     int i;
     char *oxname;
     /* char *env[2];
        env[0] = NULL;*/
     sigemptyset(&sss);
     sigaddset(&sss, SIGINT);
     sigprocmask(SIG_BLOCK, &sss, NULL);
     if (argc >= 2) {
       oxname = toFullPath(argv[1]);
       if (oxname == NULL) {
         oxname = "NULL";
       } /* Why? */
   
       /*
           {
             int i;
             i=0;
             while (environ[i] != NULL) {
                   fprintf(stderr,"%s ",environ[i++]);
             }
             fprintf(stderr,"\n");
           }
       */
   
       execve(oxname, argv+1,environ);
   
       fprintf(stderr, "\nError in oxlog: Failed to start the process.\n");
       fprintf(stderr, "oxname=%s\n", oxname);
       for (i=0; i<argc; i++) {
         fprintf(stderr, "argv[%d]=%s ", i, argv[i]);
       }
       fprintf(stderr, "\n");
       exit(20);
     }else {
       fprintf(stderr, "Error in oxlog: cannot handle argc=%d\n", argc);
       fprintf(stderr, "oxname=???\n");
       for (i=0; i<argc; i++) {
         fprintf(stderr, "argv[%d]=%s ", i, argv[i]);
       }
       fprintf(stderr, "\n");
       fprintf(stderr, "Usage example 1: oxlog /usr/X11R6/bin/xterm -icon -e /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_asir\n");
       fprintf(stderr, "      example 2: oxlog /home/nobuki/kxx/ox -ox /home/nobuki/kxx/ox_asir >& /dev/null\n");
       exit(10);
     }
   }

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.10

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>