Skip to content
Snippets Groups Projects
chksmb.c 37.2 KiB
Newer Older
		if (idxzeronum)
			printf("%-35.35s (!): %lu\n"
			       , "Zeroed Index Numbers"
			       , idxzeronum);
		if (zeronum)
			printf("%-35.35s (!): %lu\n"
			       , "Zeroed Header Numbers"
			       , zeronum);
		if (idxofferr)
			printf("%-35.35s (!): %lu\n"
			       , "Invalid Index Offsets"
			       , idxofferr);
		if (dupenum)
			printf("%-35.35s (!): %lu\n"
			       , "Duplicate Index Numbers"
			       , dupenum);
		if (dupeoff)
			printf("%-35.35s (!): %lu\n"
			       , "Duplicate Index Offsets"
			       , dupeoff);
		if (dupenumhdr)
			printf("%-35.35s (!): %lu\n"
			       , "Duplicate Header Numbers"
			       , dupenumhdr);
		if (misnumbered)
			printf("%-35.35s (!): %lu\n"
			       , "Misordered Index Numbers"
			       , misnumbered);
		if (lockerr)
			printf("%-35.35s (!): %lu\n"
			       , "Unlockable Header Records"
			       , lockerr);
		if (hdrerr)
			printf("%-35.35s (!): %lu\n"
			       , "Unreadable Header Records"
			       , hdrerr);
		if (idxnumerr)
			printf("%-35.35s (!): %lu\n"
			       , "Out-Of-Range Index Numbers"
			       , idxnumerr);
		if (hdrnumerr)
			printf("%-35.35s (!): %lu\n"
			       , "Out-Of-Range Header Numbers"
			       , hdrnumerr);
		if (hdrlenerr)
			printf("%-35.35s (!): %lu\n"
			       , "Mismatched Header Lengths"
			       , hdrlenerr);
		if (types)
			printf("%-35.35s (!): %lu\n"
			       , "Mismatched Attribute/MsgTypes"
			       , types);
#define INDXERR "Index/Header Mismatch: "
		if (attr)
			printf("%-35.35s (!): %lu\n"
			       , INDXERR "Attributes"
			       , attr);
		if (timeerr)
			printf("%-35.35s (!): %lu\n"
			       , INDXERR "Import Time"
			       , timeerr);
		if (subjcrc)
			printf("%-35.35s (!): %lu\n"
			       , INDXERR "Subject CRCs"
			       , subjcrc);
		if (fromcrc)
			printf("%-35.35s (!): %lu\n"
			       , smb.status.attr & (SMB_EMAIL | SMB_FILE_DIRECTORY) ? INDXERR "From Ext" : INDXERR "From CRCs"
			       , fromcrc);
		if (tocrc)
			printf("%-35.35s (!): %lu\n"
			       , smb.status.attr & (SMB_EMAIL | SMB_FILE_DIRECTORY) ? INDXERR "To Ext" : INDXERR "To CRCs"
			       , tocrc);
		if (fname_err)
			printf("%-35.35s (!): %lu\n"
			       , "Filename mismatches"
			       , fname_err);
		if (intransit)
			printf("%-35.35s (?): %lu\n"
			       , "Message flagged as 'In Transit'"
			       , intransit);
		if (unvalidated)
			printf("%-35.35s (?): %lu\n"
			       , "Moderated message not yet validated"
			       , unvalidated);
		if (getbodyerr)
			printf("%-35.35s (!): %lu\n"
			       , "Message Body Text Read Failures"
			       , getbodyerr);
		if (gettailerr)
			printf("%-35.35s (!): %lu\n"
			       , "Message Tail Text Read Failures"
			       , gettailerr);
		if (xlaterr)
			printf("%-35.35s (!): %lu\n"
			       , "Unsupported Translation Types"
			       , xlaterr);
		if (hasherr)
			printf("%-35.35s (!): %lu\n"
			       , "Missing Hash Records"
			       , hasherr);
		if (msgids)
			printf("%-35.35s (!): %lu\n"
			       , "Missing Message-IDs"
			       , msgids);
		if (datactalloc)
			printf("%-35.35s (!): %lu\n"
			       , "Misallocated Active Data Blocks"
			       , datactalloc);
		if (actalloc)
			printf("%-35.35s (!): %lu\n"
			       , "Misallocated Active Header Blocks"
			       , actalloc);
		/***
		if(delalloc)
		    printf("%-35.35s (!): %lu\n"
		    	,"Misallocated Deleted Header Blocks"
		    	,delalloc);
		***/

		if (dfieldoffset)
			printf("%-35.35s (!): %lu\n"
			       , "Invalid Data Field Offsets"
			       , dfieldoffset);

		if (dfieldlength)
			printf("%-35.35s (!): %lu\n"
			       , "Invalid Data Field Lengths"
			       , dfieldlength);

		if (badhash)
			printf("%-35.35s (!): %lu\n"
			       , "Invalid Hash Entries"
			       , badhash);

		if (ctrl_chars)
			printf("%-35.35s (!): %lu\n"
			       , "Control Characters in Header Fields"
			       , ctrl_chars);

		if (hdr_overlap)
			printf("%-35.35s (!): %lu\n"
			       , "Overlapping Headers"
			       , hdr_overlap);

		printf("\n%s %s Base ", smb.file, base_type);
		if (/* (headers-deleted)!=smb.status.total_msgs || */
			total != smb.status.total_msgs
			|| (headers - deleted) != total - delidx
			|| idxzeronum || zeronum
			|| hdrlenerr || hasherr || badhash
			|| getbodyerr || gettailerr
			|| orphan || dupenumhdr || dupenum || dupeoff || attr
			|| lockerr || hdrerr || hdrnumerr || idxnumerr || idxofferr
			|| actalloc || datactalloc || misnumbered || timeerr
			|| intransit || unvalidated || ctrl_chars
			|| subjcrc || fromcrc || tocrc || fname_err
			|| dfieldoffset || dfieldlength || xlaterr || idxerr) {
			printf("%shas Errors!\n", beep);
			errors++;
		}
		else
			printf("is OK\n");
		smb_unlocksmbhdr(&smb);
		smb_close(&smb);
	if ((totalmsgs && (totalmsgs != smb.status.total_msgs || totallzhmsgs))
	    || packable)
	if (totalmsgs && totalmsgs != smb.status.total_msgs)
		printf("%-39.39s: %-8lu %13s bytes used\n"
		       , "Total Active Messages"
		       , totalmsgs, ultoac(totalmsgbytes, str));
	if (totallzhmsgs)
		printf("%-39.39s: %-8lu %13s bytes saved\n"
		       , "Total LZH Compressed Messages"
		       , totallzhmsgs, ultoac(totallzhsaved, str));
	if (packable)
		printf("%-39.39s: %-8lu %13s bytes used\n"
		       , "Total Deleted Messages"
		       , totaldelmsgs, ultoac(packable, str));
	if (pause_on_error && errlast != errors) {
		fprintf(stderr, "%s\nHit any key to continue...", beep);
		if (!getch())
		fprintf(stderr, "\n");
rswindell's avatar
rswindell committed
	}
		printf("\n'fixsmb' can be used to repair many message/file base problems.\n");