- {
- fprintf(msg_file, "%s: mode or device-type changed\n", head->header.name);
- different++;
- break;
- }
- break;
-
- case LF_DUMPDIR:
- data=diff_dir=get_dir_contents(head->header.name,0);
- if (data) {
- wantbytes((long)(hstat.st_size),compare_dir);
- free(data);
- } else
- wantbytes((long)(hstat.st_size),no_op);
- /* FALL THROUGH */
-
- case LF_DIR:
- /* Check for trailing / */
- namelen = strlen(head->header.name)-1;
- really_dir:
- while (namelen && head->header.name[namelen] == '/')
- head->header.name[namelen--] = '\0'; /* Zap / */
-
- if(do_stat(&filestat))
- break;
- if(!S_ISDIR(filestat.st_mode)) {
- fprintf(msg_file, "%s is no longer a directory\n",head->header.name);
- different++;
- break;
- }
- if((filestat.st_mode&07777) != (hstat.st_mode&07777))
- sigh("mode");
- break;
-
- case LF_VOLHDR:
- break;
-
- case LF_MULTIVOL:
- namelen = strlen(head->header.name)-1;
- if (head->header.name[namelen] == '/')
- goto really_dir;
-
- if(do_stat(&filestat))
- break;
-
- if (!S_ISREG(filestat.st_mode)) {
- fprintf(msg_file, "%s: not a regular file\n",
- head->header.name);
- skip_file((long)hstat.st_size);
- different++;
- break;
- }