20 |
*/ |
*/ |
21 |
|
|
22 |
#include <string.h> |
#include <string.h> |
23 |
|
#include <stdlib.h> |
24 |
|
|
25 |
#define IN_UNIXFSYS |
#define IN_UNIXFSYS |
26 |
#include "include.h" |
#include "include.h" |
34 |
#define HAVE_RENAME |
#define HAVE_RENAME |
35 |
#endif |
#endif |
36 |
|
|
37 |
void Ldirectory(); |
void Ldirectory(void); |
38 |
|
|
39 |
|
|
40 |
|
|
142 |
|
|
143 |
#ifdef HAVE_GETCWD |
#ifdef HAVE_GETCWD |
144 |
char * |
char * |
145 |
getwd(buffer) |
getwd(char *buffer) |
|
char *buffer; |
|
146 |
{ |
{ |
147 |
char *getcwd(); |
char *getcwd(char *, size_t); |
148 |
|
|
149 |
return(getcwd(buffer, MAXPATHLEN)); |
return(getcwd(buffer, MAXPATHLEN)); |
150 |
} |
} |
204 |
|
|
205 |
#endif |
#endif |
206 |
|
|
207 |
|
void |
208 |
coerce_to_filename(pathname, p) |
coerce_to_filename(object pathname, char *p) |
|
object pathname; |
|
|
char *p; |
|
209 |
{ |
{ |
210 |
int n; |
int n; |
211 |
object namestring; |
object namestring; |
213 |
#ifndef NO_PWD_H |
#ifndef NO_PWD_H |
214 |
if(namestring->st.st_self[0]=='~') |
if(namestring->st.st_self[0]=='~') |
215 |
{char name[20]; |
{char name[20]; |
|
int j; |
|
|
object ans; |
|
216 |
char *q = namestring->st.st_self; |
char *q = namestring->st.st_self; |
217 |
#ifndef __STDC__ |
#ifndef __STDC__ |
218 |
extern struct passwd *getpwuid(); |
extern struct passwd *getpwuid(); |
219 |
extern struct passwd *getpwnam(); |
extern struct passwd *getpwnam(); |
220 |
#endif |
#endif |
221 |
|
|
|
char filename[MAXPATHLEN]; |
|
222 |
struct passwd *pwent; |
struct passwd *pwent; |
223 |
int m; |
int m=0; |
224 |
q=namestring->st.st_self; |
q=namestring->st.st_self; |
225 |
for (n=0; n< namestring->st.st_fillp; n++) |
for (n=0; n< namestring->st.st_fillp; n++) |
226 |
if (q[n]=='/') break; |
if (q[n]=='/') break; |
249 |
|
|
250 |
|
|
251 |
object |
object |
252 |
truename(pathname) |
truename(object pathname) |
|
object pathname; |
|
253 |
{ |
{ |
254 |
register char *p, *q; |
register char *p, *q; |
255 |
char filename[MAXPATHLEN]; |
char filename[MAXPATHLEN]; |
256 |
char truefilename[MAXPATHLEN]; |
char truefilename[MAXPATHLEN]; |
257 |
char current_directory[MAXPATHLEN]; |
char current_directory[MAXPATHLEN]; |
258 |
char directory[MAXPATHLEN]; |
char directory[MAXPATHLEN]; |
259 |
char *getwd(); |
char *getwd(char *buffer); |
260 |
coerce_to_filename(pathname, filename); |
coerce_to_filename(pathname, filename); |
261 |
|
|
262 |
|
|
313 |
chdir(current_directory); |
chdir(current_directory); |
314 |
vs_push(make_simple_string(truefilename)); |
vs_push(make_simple_string(truefilename)); |
315 |
pathname = coerce_to_pathname(vs_head); |
pathname = coerce_to_pathname(vs_head); |
316 |
vs_pop; |
vs_popp; |
317 |
return(pathname); |
return(pathname); |
318 |
} |
} |
319 |
object sSAallow_gzipped_fileA; |
object sSAallow_gzipped_fileA; |
320 |
|
|
321 |
bool |
bool |
322 |
file_exists(file) |
file_exists(object file) |
|
object file; |
|
323 |
{ |
{ |
324 |
char filename[MAXPATHLEN]; |
char filename[MAXPATHLEN]; |
325 |
struct stat filestatus; |
struct stat filestatus; |
348 |
} |
} |
349 |
|
|
350 |
FILE * |
FILE * |
351 |
backup_fopen(filename, option) |
backup_fopen(char *filename, char *option) |
|
char *filename,*option; |
|
352 |
{ |
{ |
353 |
char backupfilename[MAXPATHLEN]; |
char backupfilename[MAXPATHLEN]; |
354 |
char command[MAXPATHLEN * 2]; |
char command[MAXPATHLEN * 2]; |
360 |
} |
} |
361 |
|
|
362 |
int |
int |
363 |
file_len(fp) |
file_len(FILE *fp) |
|
FILE *fp; |
|
364 |
{ |
{ |
365 |
struct stat filestatus; |
struct stat filestatus; |
366 |
|
|
369 |
else return 0; |
else return 0; |
370 |
} |
} |
371 |
|
|
372 |
Ltruename() |
void |
373 |
|
Ltruename(void) |
374 |
{ |
{ |
375 |
check_arg(1); |
check_arg(1); |
376 |
check_type_or_pathname_string_symbol_stream(&vs_base[0]); |
check_type_or_pathname_string_symbol_stream(&vs_base[0]); |
377 |
vs_base[0] = truename(vs_base[0]); |
vs_base[0] = truename(vs_base[0]); |
378 |
} |
} |
379 |
|
|
380 |
Lrename_file() |
void |
381 |
|
Lrename_file(void) |
382 |
{ |
{ |
383 |
char filename[MAXPATHLEN]; |
char filename[MAXPATHLEN]; |
384 |
char newfilename[MAXPATHLEN]; |
char newfilename[MAXPATHLEN]; |
|
char command[MAXPATHLEN * 2]; |
|
385 |
|
|
386 |
check_arg(2); |
check_arg(2); |
387 |
check_type_or_pathname_string_symbol_stream(&vs_base[0]); |
check_type_or_pathname_string_symbol_stream(&vs_base[0]); |
444 |
RETURN1(path); |
RETURN1(path); |
445 |
} |
} |
446 |
|
|
447 |
Lprobe_file() |
void |
448 |
|
Lprobe_file(void) |
449 |
{ |
{ |
450 |
check_arg(1); |
check_arg(1); |
451 |
|
|
456 |
vs_base[0] = Cnil; |
vs_base[0] = Cnil; |
457 |
} |
} |
458 |
|
|
459 |
Lfile_write_date() |
void |
460 |
|
Lfile_write_date(void) |
461 |
{ |
{ |
462 |
char filename[MAXPATHLEN]; |
char filename[MAXPATHLEN]; |
463 |
struct stat filestatus; |
struct stat filestatus; |
469 |
vs_base[0] = unix_time_to_universal_time(filestatus.st_mtime); |
vs_base[0] = unix_time_to_universal_time(filestatus.st_mtime); |
470 |
} |
} |
471 |
|
|
472 |
Lfile_author() |
void |
473 |
|
Lfile_author(void) |
474 |
{ |
{ |
475 |
char filename[MAXPATHLEN]; |
char filename[MAXPATHLEN]; |
476 |
#ifndef NO_PWD_H |
#ifndef NO_PWD_H |
492 |
|
|
493 |
} |
} |
494 |
|
|
495 |
Luser_homedir_pathname() |
void |
496 |
|
Luser_homedir_pathname(void) |
497 |
{ |
{ |
498 |
#ifndef NO_PWD_H |
#ifndef NO_PWD_H |
499 |
struct passwd *pwent; |
struct passwd *pwent; |
524 |
|
|
525 |
#ifdef BSD |
#ifdef BSD |
526 |
void |
void |
527 |
Ldirectory() |
Ldirectory(void) |
528 |
{ |
{ |
529 |
char filename[MAXPATHLEN]; |
char filename[MAXPATHLEN]; |
530 |
char command[MAXPATHLEN * 2]; |
char command[MAXPATHLEN * 2]; |
531 |
FILE *fp; |
FILE *fp; |
532 |
register i, c; |
register int i, c; |
533 |
object *top = vs_top; |
object *top = vs_top; |
534 |
char iobuffer[BUFSIZ]; |
char iobuffer[BUFSIZ]; |
535 |
extern FILE *popen(); |
extern FILE *popen(const char *, const char *); |
536 |
|
|
537 |
check_arg(1); |
check_arg(1); |
538 |
|
|
554 |
fp = popen(command, "r"); |
fp = popen(command, "r"); |
555 |
setbuf(fp, iobuffer); |
setbuf(fp, iobuffer); |
556 |
for (;;) { |
for (;;) { |
557 |
for (i = 0; c = getc(fp); i++) |
for (i = 0; (c = getc(fp)); i++) |
558 |
if (c <= 0) |
if (c <= 0) |
559 |
goto L; |
goto L; |
560 |
else if (c == '\n') |
else if (c == '\n') |
755 |
|
|
756 |
#endif |
#endif |
757 |
|
|
758 |
siLchdir() |
void |
759 |
|
siLchdir(void) |
760 |
{ |
{ |
761 |
char filename[MAXPATHLEN]; |
char filename[MAXPATHLEN]; |
762 |
|
|
769 |
1, vs_base[0]); |
1, vs_base[0]); |
770 |
} |
} |
771 |
|
|
772 |
init_unixfsys() |
void |
773 |
|
init_unixfsys(void) |
774 |
{ |
{ |
775 |
make_function("TRUENAME", Ltruename); |
make_function("TRUENAME", Ltruename); |
776 |
make_function("RENAME-FILE", Lrename_file); |
make_function("RENAME-FILE", Lrename_file); |