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 |
|
|
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)); |
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; |
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; |
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 |
|
|
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 |
|
|
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 |
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; |
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 |
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 |
|
|
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, |
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 |
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 |
} |
} |
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 |
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 |
|
|