libs-steptalk/Tools/stupdate_languages.m

126 lines
3.2 KiB
Mathematica
Raw Normal View History

/**
stupdate_languages.m
Copyright (c) 2002 Free Software Foundation
Written by: Stefan Urbanek <urbanek@host.sk>
Date: 2002
This file is part of the StepTalk project.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#import "STExecutor.h"
#import <StepTalk/StepTalk.h>
#import <Foundation/NSArray.h>
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSDebug.h>
#import <Foundation/NSDictionary.h>
#import <Foundation/NSFileManager.h>
#import <Foundation/NSException.h>
#import <Foundation/NSEnumerator.h>
#import <Foundation/NSProcessInfo.h>
#import <Foundation/NSString.h>
#include <stdio.h>
NSFileManager *fm;
BOOL create_directory(NSString *path)
{
NSString *par = [path stringByDeletingLastPathComponent];
if( [fm fileExistsAtPath:path] )
{
return YES;
}
else if( ![fm fileExistsAtPath:par] )
{
if(!create_directory(par))
{
return NO;
}
}
return [fm createDirectoryAtPath:path attributes:nil];
}
void update_languages(void)
{
* STEngine.h: Fixed declaration to match implementation to avoid compiler warnings. * STEnvironment.h: Ditto. * STScriptsManager.h: Ditto. * STLanguage.h: Corrected declaration. * STScriptsManager.m: Added needed interface declaration. * GNUmakefile: Added flags to show all warnings except for import. * Module/ObjectiveC/GNUmakefile: Added flags to show all warnings except for import. * Module/Foundation/GNUmakefile: Added flags to show all warnings except for import. * Module/AppKit/AppKitExceptions.m: Used variable to supress compiler warnings. * Module/AppKit/AppKitNotifications.m: Ditto. * Module/AppKit/GNUmakefile: Added flags to show all warnings except for import. * Module/GDL2/GDL2Constants.m: Used variable to supress compiler warnings. * Module/GDL2/GNUmakefile: Added flags to show all warnings except for import. * Module/SimpleTranscripts/GNUmakefile: Added flags to show all warnings except for import. * Module/StepTalk/GNUmakefile: Added flags to show all warnings except for import. * Tools/stalk.m: Added needed interface declaration. * Tools/stupdate_languages.m: Corrected variable declaration and added cast. ApplicationScripting * GNUmakefile: Added flags to be able to compile from the building directories and show all warnings except for import. * NSApplication+additions.m: Added import of needed headers. Added interface declarations to supress compiler warnings. Commented unused variables to supress compiler warnings. Corrected variable types and added necessary casts. * STScriptingSupport.m: Added interface declaraions to supress compiler warnings. Examples/Shell * GNUmakefile: Added flags to show all warnings except for import. * STShell.m: Unified name for private categories. Examples/Server * ChangeLog: Added new file. * GNUmakefile: Added flags to show all warnings except for import. Languages/Smalltalk/ChangeLog * GNUmakefile: Added flags to show all warnings except for import. * STBlock.m: Initialzed variables to supress compiler warnings. * STCompiledMethod.m: Added needed import. * STCompiler.m: Added missing declaration. Wrapped declarations only needed for DEBUG into #ifdefs to supress compiler warnings. Initialzed variables to supress compiler warnings. * STExecutionContext.m: Unified name for private categories. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/steptalk/trunk@16351 72102866-910b-0410-8b05-ffd578937521
2003-04-04 10:57:04 +00:00
NSArray *langNames = [STLanguage allLanguageNames];
NSString *path = STUserConfigPath();
STLanguage *lang;
NSString *langName;
NSEnumerator *enumerator;
NSArray *types;
NSEnumerator *typeenum;
NSString *type;
NSMutableDictionary *typeDict;
NSDictionary *dict;
typeDict = (id)[NSMutableDictionary dictionary];
enumerator = [langNames objectEnumerator];
NSLog(@"Updating languages...");
while( (langName = [enumerator nextObject]) )
{
lang = [STLanguage languageWithName:langName];
types = [[lang infoDictionary] objectForKey:@"STFileTypes"];
typeenum = [types objectEnumerator];
while( (type = [typeenum nextObject]) )
{
[typeDict setObject:langName forKey:type];
}
}
dict = [NSDictionary dictionaryWithObject:typeDict
forKey:@"STFileTypes"];
if(!create_directory(path))
{
NSLog(@"Unable to create directory '%@'", path);
return;
}
path = [path stringByAppendingPathComponent:STLanguagesConfigFile];
[dict writeToFile:path atomically:YES];
if([dict count] == 0)
{
NSLog(@"No StepTalk language bundles found.");
}
}
int main(int argc, const char **argv)
{
NSAutoreleasePool *pool;
pool = [NSAutoreleasePool new];
fm = [NSFileManager defaultManager];
update_languages();
RELEASE(pool);
return 0;
}