/[emacs]/emacs/src/callproc.c
ViewVC logotype

Diff of /emacs/src/callproc.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.190 by lektu, Thu Jul 11 14:08:58 2002 UTC revision 1.191 by raeburn, Mon Jul 15 00:00:35 2002 UTC
# Line 159  call_process_cleanup (fdpid) Line 159  call_process_cleanup (fdpid)
159    register Lisp_Object file;    register Lisp_Object file;
160    file = Fcdr (fdpid);    file = Fcdr (fdpid);
161    emacs_close (XFASTINT (Fcar (fdpid)));    emacs_close (XFASTINT (Fcar (fdpid)));
162    if (strcmp (XSTRING (file)-> data, NULL_DEVICE) != 0)    if (strcmp (SDATA (file), NULL_DEVICE) != 0)
163      unlink (XSTRING (file)->data);      unlink (SDATA (file));
164  #else /* not MSDOS and not MAC_OS8 */  #else /* not MSDOS and not MAC_OS8 */
165    register int pid = XFASTINT (Fcdr (fdpid));    register int pid = XFASTINT (Fcdr (fdpid));
166    
# Line 371  usage: (call-process PROGRAM &optional I Line 371  usage: (call-process PROGRAM &optional I
371    
372    display = nargs >= 4 ? args[3] : Qnil;    display = nargs >= 4 ? args[3] : Qnil;
373    
374    filefd = emacs_open (XSTRING (infile)->data, O_RDONLY, 0);    filefd = emacs_open (SDATA (infile), O_RDONLY, 0);
375    if (filefd < 0)    if (filefd < 0)
376      {      {
377        report_file_error ("Opening process input file", Fcons (infile, Qnil));        report_file_error ("Opening process input file", Fcons (infile, Qnil));
# Line 389  usage: (call-process PROGRAM &optional I Line 389  usage: (call-process PROGRAM &optional I
389        emacs_close (filefd);        emacs_close (filefd);
390        report_file_error ("Searching for program", Fcons (args[0], Qnil));        report_file_error ("Searching for program", Fcons (args[0], Qnil));
391      }      }
392    new_argv[0] = XSTRING (path)->data;    new_argv[0] = SDATA (path);
393    if (nargs > 4)    if (nargs > 4)
394      {      {
395        register int i;        register int i;
# Line 407  usage: (call-process PROGRAM &optional I Line 407  usage: (call-process PROGRAM &optional I
407                if (argument_coding.type == coding_type_ccl)                if (argument_coding.type == coding_type_ccl)
408                  setup_ccl_program (&(argument_coding.spec.ccl.encoder), Qnil);                  setup_ccl_program (&(argument_coding.spec.ccl.encoder), Qnil);
409              }              }
410            new_argv[i - 3] = XSTRING (args[i])->data;            new_argv[i - 3] = SDATA (args[i]);
411          }          }
412        UNGCPRO;        UNGCPRO;
413        new_argv[nargs - 3] = 0;        new_argv[nargs - 3] = 0;
# Line 443  usage: (call-process PROGRAM &optional I Line 443  usage: (call-process PROGRAM &optional I
443  #ifdef MAC_OS8  #ifdef MAC_OS8
444    /* Since we don't have pipes on the Mac, create a temporary file to    /* Since we don't have pipes on the Mac, create a temporary file to
445       hold the output of the subprocess.  */       hold the output of the subprocess.  */
446    tempfile = (char *) alloca (STRING_BYTES (XSTRING (Vtemp_file_name_pattern)) + 1);    tempfile = (char *) alloca (SBYTES (Vtemp_file_name_pattern) + 1);
447    bcopy (XSTRING (Vtemp_file_name_pattern)->data, tempfile,    bcopy (SDATA (Vtemp_file_name_pattern), tempfile,
448           STRING_BYTES (XSTRING (Vtemp_file_name_pattern)) + 1);           SBYTES (Vtemp_file_name_pattern) + 1);
449    
450    mktemp (tempfile);    mktemp (tempfile);
451    
# Line 505  usage: (call-process PROGRAM &optional I Line 505  usage: (call-process PROGRAM &optional I
505      else if (STRINGP (error_file))      else if (STRINGP (error_file))
506        {        {
507  #ifdef DOS_NT  #ifdef DOS_NT
508          fd_error = emacs_open (XSTRING (error_file)->data,          fd_error = emacs_open (SDATA (error_file),
509                                 O_WRONLY | O_TRUNC | O_CREAT | O_TEXT,                                 O_WRONLY | O_TRUNC | O_CREAT | O_TEXT,
510                                 S_IREAD | S_IWRITE);                                 S_IREAD | S_IWRITE);
511  #else  /* not DOS_NT */  #else  /* not DOS_NT */
512          fd_error = creat (XSTRING (error_file)->data, 0666);          fd_error = creat (SDATA (error_file), 0666);
513  #endif /* not DOS_NT */  #endif /* not DOS_NT */
514        }        }
515    
# Line 545  usage: (call-process PROGRAM &optional I Line 545  usage: (call-process PROGRAM &optional I
545          close (fd_error);          close (fd_error);
546        fd1 = -1; /* No harm in closing that one! */        fd1 = -1; /* No harm in closing that one! */
547    
548        infn = XSTRING (infile)->data;        infn = SDATA (infile);
549        outfn = tempfile;        outfn = tempfile;
550        if (NILP (error_file))        if (NILP (error_file))
551          errfn = NULL_DEVICE;          errfn = NULL_DEVICE;
552        else if (EQ (Qt, error_file))        else if (EQ (Qt, error_file))
553          errfn = outfn;          errfn = outfn;
554        else        else
555          errfn = XSTRING (error_file)->data;          errfn = SDATA (error_file);
556        currdn = XSTRING (current_dir)->data;        currdn = SDATA (current_dir);
557        pid = run_mac_command (new_argv, currdn, infn, outfn, errfn);        pid = run_mac_command (new_argv, currdn, infn, outfn, errfn);
558    
559        /* Record that the synchronous process exited and note its        /* Record that the synchronous process exited and note its
# Line 1047  usage: (call-process-region START END PR Line 1047  usage: (call-process-region START END PR
1047    strcat (tempfile, "detmp.XXX");    strcat (tempfile, "detmp.XXX");
1048  #endif  #endif
1049  #else /* not DOS_NT */  #else /* not DOS_NT */
1050    char *tempfile = (char *) alloca (STRING_BYTES (XSTRING (Vtemp_file_name_pattern)) + 1);    char *tempfile = (char *) alloca (SBYTES (Vtemp_file_name_pattern) + 1);
1051    bcopy (XSTRING (Vtemp_file_name_pattern)->data, tempfile,    bcopy (SDATA (Vtemp_file_name_pattern), tempfile,
1052           STRING_BYTES (XSTRING (Vtemp_file_name_pattern)) + 1);           SBYTES (Vtemp_file_name_pattern) + 1);
1053  #endif /* not DOS_NT */  #endif /* not DOS_NT */
1054    
1055    coding_systems = Qt;    coding_systems = Qt;
# Line 1188  child_setup (in, out, err, new_argv, set Line 1188  child_setup (in, out, err, new_argv, set
1188      register char *temp;      register char *temp;
1189      register int i;      register int i;
1190    
1191      i = STRING_BYTES (XSTRING (current_dir));      i = SBYTES (current_dir);
1192  #ifdef MSDOS  #ifdef MSDOS
1193      /* MSDOS must have all environment variables malloc'ed, because      /* MSDOS must have all environment variables malloc'ed, because
1194         low-level libc functions that launch subsidiary processes rely         low-level libc functions that launch subsidiary processes rely
# Line 1199  child_setup (in, out, err, new_argv, set Line 1199  child_setup (in, out, err, new_argv, set
1199  #endif  #endif
1200      temp = pwd_var + 4;      temp = pwd_var + 4;
1201      bcopy ("PWD=", pwd_var, 4);      bcopy ("PWD=", pwd_var, 4);
1202      bcopy (XSTRING (current_dir)->data, temp, i);      bcopy (SDATA (current_dir), temp, i);
1203      if (!IS_DIRECTORY_SEP (temp[i - 1])) temp[i++] = DIRECTORY_SEP;      if (!IS_DIRECTORY_SEP (temp[i - 1])) temp[i++] = DIRECTORY_SEP;
1204      temp[i] = 0;      temp[i] = 0;
1205    
# Line 1253  child_setup (in, out, err, new_argv, set Line 1253  child_setup (in, out, err, new_argv, set
1253           tem = XCDR (tem))           tem = XCDR (tem))
1254        {        {
1255          char **ep = env;          char **ep = env;
1256          char *string = (char *) XSTRING (XCAR (tem))->data;          char *string = (char *) SDATA (XCAR (tem));
1257          /* See if this string duplicates any string already in the env.          /* See if this string duplicates any string already in the env.
1258             If so, don't put it in.             If so, don't put it in.
1259             When an env var has multiple definitions,             When an env var has multiple definitions,
# Line 1280  child_setup (in, out, err, new_argv, set Line 1280  child_setup (in, out, err, new_argv, set
1280    }    }
1281  #ifdef WINDOWSNT  #ifdef WINDOWSNT
1282    prepare_standard_handles (in, out, err, handles);    prepare_standard_handles (in, out, err, handles);
1283    set_process_dir (XSTRING (current_dir)->data);    set_process_dir (SDATA (current_dir));
1284  #else  /* not WINDOWSNT */  #else  /* not WINDOWSNT */
1285    /* Make sure that in, out, and err are not actually already in    /* Make sure that in, out, and err are not actually already in
1286       descriptors zero, one, or two; this could happen if Emacs is       descriptors zero, one, or two; this could happen if Emacs is
# Line 1405  getenv_internal (var, varlen, value, val Line 1405  getenv_internal (var, varlen, value, val
1405    
1406        entry = XCAR (scan);        entry = XCAR (scan);
1407        if (STRINGP (entry)        if (STRINGP (entry)
1408            && STRING_BYTES (XSTRING (entry)) > varlen            && SBYTES (entry) > varlen
1409            && XSTRING (entry)->data[varlen] == '='            && SREF (entry, varlen) == '='
1410  #ifdef WINDOWSNT  #ifdef WINDOWSNT
1411            /* NT environment variables are case insensitive.  */            /* NT environment variables are case insensitive.  */
1412            && ! strnicmp (XSTRING (entry)->data, var, varlen)            && ! strnicmp (SDATA (entry), var, varlen)
1413  #else  /* not WINDOWSNT */  #else  /* not WINDOWSNT */
1414            && ! bcmp (XSTRING (entry)->data, var, varlen)            && ! bcmp (SDATA (entry), var, varlen)
1415  #endif /* not WINDOWSNT */  #endif /* not WINDOWSNT */
1416            )            )
1417          {          {
1418            *value    = (char *) XSTRING (entry)->data + (varlen + 1);            *value    = (char *) SDATA (entry) + (varlen + 1);
1419            *valuelen = STRING_BYTES (XSTRING (entry)) - (varlen + 1);            *valuelen = SBYTES (entry) - (varlen + 1);
1420            return 1;            return 1;
1421          }          }
1422      }      }
# Line 1435  This function consults the variable ``pr Line 1435  This function consults the variable ``pr
1435    int valuelen;    int valuelen;
1436    
1437    CHECK_STRING (var);    CHECK_STRING (var);
1438    if (getenv_internal (XSTRING (var)->data, STRING_BYTES (XSTRING (var)),    if (getenv_internal (SDATA (var), SBYTES (var),
1439                         &value, &valuelen))                         &value, &valuelen))
1440      return make_string (value, valuelen);      return make_string (value, valuelen);
1441    else    else
# Line 1550  init_callproc () Line 1550  init_callproc ()
1550  #endif  #endif
1551      {      {
1552        tempdir = Fdirectory_file_name (Vexec_directory);        tempdir = Fdirectory_file_name (Vexec_directory);
1553        if (access (XSTRING (tempdir)->data, 0) < 0)        if (access (SDATA (tempdir), 0) < 0)
1554          dir_warning ("Warning: arch-dependent data dir (%s) does not exist.\n",          dir_warning ("Warning: arch-dependent data dir (%s) does not exist.\n",
1555                       Vexec_directory);                       Vexec_directory);
1556      }      }
1557    
1558    tempdir = Fdirectory_file_name (Vdata_directory);    tempdir = Fdirectory_file_name (Vdata_directory);
1559    if (access (XSTRING (tempdir)->data, 0) < 0)    if (access (SDATA (tempdir), 0) < 0)
1560      dir_warning ("Warning: arch-independent data dir (%s) does not exist.\n",      dir_warning ("Warning: arch-independent data dir (%s) does not exist.\n",
1561                   Vdata_directory);                   Vdata_directory);
1562    

Legend:
Removed from v.1.190  
changed lines
  Added in v.1.191

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26