time(&this_time);
if(gnu_dumpfile[0]!='/') {
#if defined(__MSDOS__) || defined(USG) || defined(_POSIX_VERSION)
- if(!getcwd(path,PATH_MAX)) {
+ if(!getcwd(path,PATH_MAX))
msg("Couldn't get current directory.");
exit(EX_SYSTEM);
- }
#else
char *getwd();
n->found=0;
}
if(gnu_dumpfile)
- write_dir_file();
+ write_dir_file(gnu_dumpfile);
}
int
for(n=namelist;n;n=n->next) {
if(!strcmp(n->name,p)) {
- n->dir_contents = new_buf ? new_buf : "\0\0\0\0";
+ n->dir_contents = new_buf;
break;
}
}
- if (new_buf)
- {
- len=strlen(p);
- buflen= NAMSIZ<=len ? len + NAMSIZ : NAMSIZ;
- namebuf= ck_malloc(buflen+1);
-
- (void)strcpy(namebuf,p);
- if(namebuf[len-1]!='/') {
- namebuf[len++]='/';
- namebuf[len]='\0';
- }
- for(p_buf=new_buf;*p_buf;p_buf+=sublen+1) {
- sublen=strlen(p_buf);
- if(*p_buf=='D') {
- if(len+sublen>=buflen) {
- buflen+=NAMSIZ;
- namebuf= ck_realloc(namebuf,buflen+1);
+ len=strlen(p);
+ buflen= NAMSIZ<=len ? len + NAMSIZ : NAMSIZ;
+ namebuf= ck_malloc(buflen+1);
+
+ (void)strcpy(namebuf,p);
+ if(namebuf[len-1]!='/') {
+ namebuf[len++]='/';
+ namebuf[len]='\0';
+ }
+ for(p_buf=new_buf;*p_buf;p_buf+=sublen+1) {
+ sublen=strlen(p_buf);
+ if(*p_buf=='D') {
+ if(len+sublen>=buflen) {
+ buflen+=NAMSIZ;
+ namebuf= ck_realloc(namebuf,buflen+1);
+ }
+ (void)strcpy(namebuf+len,p_buf+1);
+ addname(namebuf);
+ add_dir_name(namebuf,device);
}
- (void)strcpy(namebuf+len,p_buf+1);
- addname(namebuf);
- add_dir_name(namebuf,device);
- }
- }
- free(namebuf);
- }
+ }
+ free(namebuf);
}
/* Returns non-zero if p is . or .. This could be a macro for speed. */
char *from,*to;
extern union record *head;
- dirp=opendir(skipcrud+current_file_name);
+ dirp=opendir(skipcrud+head->header.name);
if(!dirp) {
/* The directory doesn't exist now. It'll be created.
break;
}
if(*arc=='\0') {
- p=new_name(skipcrud+current_file_name,cur);
+ p=new_name(skipcrud+head->header.name,cur);
if(f_confirm && !confirm("delete",p)) {
free(p);
continue;