This is MailboxSummary+Archiving.m in view mode; [Download] [Up]
/* -*-ObjC-*-
*******************************************************************************
*
* File: MailboxSummary+Archiving.m
* RCS: MailboxSummary+Archiving.m,v 1.1 1998/05/24 20:26:44 tom Exp
* Description: Archiving category for MailboxSummary class
* Author: Tom Hageman <tom@basil.icce.rug.nl>
* Created: May 1998
* Modified:
* Language: Objective-C
* Package: EnhanceMail
* Status: Experimental
*
* Copyright (C) 1998 Tom Hageman, but otherwise this file is perfect freeware.
*
*******************************************************************************
*/
#import <libc.h>
#import "MailboxSummary.h"
@implementation EnhanceMailboxSummary (Archiving)
// XXX This only reads/writes stat fields we are interested in.
static void readStat(NXTypedStream *stream, struct stat *st)
{
NXReadType(stream, @encode(typeof(st->st_ino)), &st->st_ino);
// NO! This is not portable in light of NFS mounts.
///NXReadType(stream, @encode(typeof(st->st_dev)), &st->st_dev);
NXReadType(stream, @encode(typeof(st->st_mtime)), &st->st_mtime);
NXReadType(stream, @encode(typeof(st->st_size)), &st->st_size);
}
static void writeStat(NXTypedStream *stream, struct stat *st)
{
NXWriteType(stream, @encode(typeof(st->st_ino)), &st->st_ino);
// NO! This is not portable in light of NFS mounts.
///NXWriteType(stream, @encode(typeof(st->st_dev)), &st->st_dev);
NXWriteType(stream, @encode(typeof(st->st_mtime)), &st->st_mtime);
NXWriteType(stream, @encode(typeof(st->st_size)), &st->st_size);
}
- read:(NXTypedStream *)stream
{
char *shortName;
int i;
BOOL inSummaryHash;
[super read:stream];
NXReadType(stream, @encode(typeof(shortName)), &shortName);
[self setName:shortName];
free(shortName);
NXReadType(stream, @encode(typeof(loadStatus)), &loadStatus);
NXReadType(stream, @encode(typeof(accurate)), &accurate);
NXReadType(stream, @encode(typeof(collectAll)), &collectAll);
#if 0
NXReadType(stream, @encode(typeof(hasPendingAppnmail)), &hasPendingAppnmail);
NXReadType(stream, @encode(typeof(hasNewMail)), &hasNewMail);
#endif
NXReadArray(stream, @encode(typeof(counts[0])), sizeof(counts)/sizeof(counts[0]), counts);
if (collectAll)
{
NXReadArray(stream, @encode(typeof(sizes[0])), sizeof(sizes)/sizeof(sizes[0]), sizes);
NXReadArray(stream, @encode(typeof(attachCounts[0])), sizeof(attachCounts)/sizeof(attachCounts[0]), attachCounts);
NXReadArray(stream, @encode(typeof(attachSizes[0])), sizeof(attachSizes)/sizeof(attachSizes[0]), attachSizes);
}
for (i = 0; i < sizeof(stats)/sizeof(stats[0]); i++)
{
readStat(stream, &stats[i]);
}
NXReadType(stream, @encode(typeof(inSummaryHash)), &inSummaryHash);
if (inSummaryHash)
{
[[self class] setSummary:self forName:[self name]];
}
if (!fullname)
{
self = [self free];
}
return self;
}
- write:(NXTypedStream *)stream
{
const char *shortName = [self shortName];
int i;
BOOL inSummaryHash;
[super write:stream];
NXWriteType(stream, @encode(typeof(shortName)), &shortName);
NXWriteType(stream, @encode(typeof(loadStatus)), &loadStatus);
NXWriteType(stream, @encode(typeof(accurate)), &accurate);
NXWriteType(stream, @encode(typeof(collectAll)), &collectAll);
#if 0
NXWriteType(stream, @encode(typeof(hasPendingAppnmail)), &hasPendingAppnmail);
NXWriteType(stream, @encode(typeof(hasNewMail)), &hasNewMail);
#endif
NXWriteArray(stream, @encode(typeof(counts[0])), sizeof(counts)/sizeof(counts[0]), counts);
if (collectAll)
{
NXWriteArray(stream, @encode(typeof(sizes[0])), sizeof(sizes)/sizeof(sizes[0]), sizes);
NXWriteArray(stream, @encode(typeof(attachCounts[0])), sizeof(attachCounts)/sizeof(attachCounts[0]), attachCounts);
NXWriteArray(stream, @encode(typeof(attachSizes[0])), sizeof(attachSizes)/sizeof(attachSizes[0]), attachSizes);
}
for (i = 0; i < sizeof(stats)/sizeof(stats[0]); i++)
{
writeStat(stream, &stats[i]);
}
inSummaryHash = ([[self class] summaryForName:[self name] create:NO] != nil);
NXWriteType(stream, @encode(typeof(inSummaryHash)), &inSummaryHash);
return self;
}
@end // EnhanceMailboxSummary (Archiving)
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.