This is WoodDoc_Name.m in view mode; [Download] [Up]
#import "wooddoc.h" @implementation WoodDoc (Name) static char *defaultFormat = NULL; // Default title format static const char *extension = NULL; // Document extension + setDocExtension:(const char *)newExtension { extension = newExtension; return self; } + (const char *)docExtension { return extension; } + setDefaultTitleFormat:(const char *)newDefault { char temp[MAXPATHLEN+1]; if (defaultFormat) NX_FREE(defaultFormat); sprintf(temp,"%s.%s",newDefault,[self docExtension]); defaultFormat = NXCopyStringBufferFromZone(temp,[self zone]); return self; } + (const char *)defaultTitleFormat { return defaultFormat; } - (const char *)fileName { static char filenameBuf[MAXPATHLEN+1]; if (!directory && !name) [self setName:NULL andDirectory:NULL]; if (directory) { strcpy(filenameBuf, directory); strcat(filenameBuf, "/"); } else filenameBuf[0] = '\0'; if (name) strcat(filenameBuf, name); return filenameBuf; } - (const char *)directory { return directory; } - (const char *)name { return name; } - setName:(const char *)newName andDirectory:(const char *)newDirectory { char newNameBuf[MAXPATHLEN+1]; static int uniqueCount = 1; if ((newName && *newName) || !name) { if (!newName || !*newName) { sprintf(newNameBuf, [[self class] defaultTitleFormat], uniqueCount++); newName = newNameBuf; } else if (name) NX_FREE(name); name = NXCopyStringBufferFromZone(newName, [self zone]); } if ((newDirectory && (*newDirectory == '/')) || !directory) { if (!newDirectory || (*newDirectory != '/')) newDirectory = [NXApp currentDirectory]; else if (directory) NX_FREE(directory); directory = NXCopyStringBufferFromZone(newDirectory, [self zone]); } if(theOOEClient != nil || isOOEServer) { [self setTitle_OOE:self]; return self; } [window setTitleAsFilename:[self fileName]]; NXNameZone([self zone], [self fileName]); return self; } - setName:(const char *)file { char *lastComponent; char path[MAXPATHLEN+1]; if (file) { strcpy(path, file); lastComponent = rindex(path, '.'); if(lastComponent && !strcmp(lastComponent + 1, "diagram2")) return self; lastComponent = rindex(path, '/'); if (lastComponent) { *lastComponent++ = '\0'; return [self setName:lastComponent andDirectory:path]; } else return [self setName:file andDirectory:NULL]; } return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.