diff options
author | Matthias Huetsch [mhu] <matthias.huetsch@oracle.com> | 2011-01-27 18:16:28 +0100 |
---|---|---|
committer | Matthias Huetsch [mhu] <matthias.huetsch@oracle.com> | 2011-01-27 18:16:28 +0100 |
commit | eaaae34cbc16d9052a806caf0ad5a18339df1ada (patch) | |
tree | 53b4da0bcaaf879ebea1c716395ecc8cce5cf297 /soltools | |
parent | e1739410c0a7667759f24c38e859649a18b06eb0 (diff) | |
parent | 69218d276c35f130cd91c94cec1199a0a4b01215 (diff) |
Update from master repository (DEV300_m98).
Diffstat (limited to 'soltools')
-rwxr-xr-x | soltools/HIDCompiler/hidclex.l | 951 | ||||
-rw-r--r-- | soltools/HIDCompiler/makefile.mk | 63 | ||||
-rw-r--r-- | soltools/HIDCompiler/wrap_hidclex.cxx | 31 | ||||
-rw-r--r-- | soltools/cpp/_nlist.c | 3 | ||||
-rw-r--r-- | soltools/cpp/_unix.c | 12 | ||||
-rw-r--r-- | soltools/cpp/makefile.mk | 10 | ||||
-rw-r--r-- | soltools/javadep/javadep.c | 11 | ||||
-rw-r--r-- | soltools/mkdepend/def.h | 5 | ||||
-rw-r--r-- | soltools/mkdepend/include.c | 21 | ||||
-rw-r--r-- | soltools/prj/build.lst | 1 | ||||
-rw-r--r-- | soltools/prj/d.lst | 2 |
11 files changed, 44 insertions, 1066 deletions
diff --git a/soltools/HIDCompiler/hidclex.l b/soltools/HIDCompiler/hidclex.l deleted file mode 100755 index e99618f30225..000000000000 --- a/soltools/HIDCompiler/hidclex.l +++ /dev/null @@ -1,951 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ -%{ -// Suppress any warnings from generated code: -#if defined __GNUC__ -#pragma GCC system_header -#elif defined __SUNPRO_CC -#pragma disable_warn -#elif defined _MSC_VER -#pragma warning(push, 1) -#endif - -static char const Revision[] = "$Revision: 1.9 $" ; - -/* - -XX XX XXXX XXXXXX -XX XX XX XX XX -XX XX XX XX XX -XXXXXX XX XX XX -XX XX XX XX XX -XX XX XX XX XX -XX XX XXXX XXXXXX - - - XXXX XX XXX - XX XX XX -XX XXXX XXX XX XX XXX XXX XX XXXXX XX XXX -XX XX XX XX X XX XX XX XX XX XX X XXX XX -XX X XX XX XX X XX XX XX XX XX XXXXXXX XX - XX XX XX XX XX XX XXXXX XX XX XX XX - XXXX XXXX XXX XXX XX XXXX XXXX XXXXX XXXX - XXXX - -*/ - - -/* length of buffer for reading with lex */ -/**/ -/* enlarge token buffer to tokenize whole strings */ -#undef YYLMAX -#define YYLMAX 64000 - -int exclude_bracelevel=0; /* count braces in that start state */ -static YY_BUFFER_STATE InputFiles[127]; // for recursive parse -static int nInputFileDepth = 0; - - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#include <ctype.h> - -int alloc_cnt = 0; -static bool bVerbose = false; -void freestring( char const * ); //forward - -char* dot2underline( char* str ) -{ - size_t len=strlen(str); - for( size_t i=0; i<len; i++ ) - if( str[i]=='.' ) str[i]='_'; - return str; -} - -void dotappend( char*& base, char const * suffix ) -{ - // append like "str.suffix" if suffix else "str" - - if( suffix == NULL ) - return ; - - size_t siz; - if( (siz=strlen(suffix)) == 0 ) - return ; - - size_t siz2 = base==NULL ? 0 : strlen(base); - - char* newstr; - - {//do never forget to increment/decrement alloc_cnt - newstr = (char*) malloc( (siz2+siz+1) +1 /*for "." */ ); - alloc_cnt++; - } - - if( newstr == NULL ) - fprintf( stderr,"error: dotappend() could not malloc() \n"), exit(1); - - if( base ) { - strcpy( newstr, base ); - freestring( base ); - } - else - newstr[0] = '\0'; - - strcat( newstr, "." ); - strcat( newstr, suffix ); - base = newstr; -} - -void dotsubtract( char*& base, char const * suffix ) -{ - // remove dotted suffix from base.suffix --> base - - if( base == NULL || suffix == NULL ) - return; - if( strlen(suffix) == 0 ) - return; - if( (strlen(suffix)+1) > strlen(base) ) - return; - char * pos=strstr( base, suffix); - if( pos && (pos-1 >= base) && ( *(pos-1) == '.') ) - if( *(pos+strlen(suffix)) == '\0' ) //only if at end of base - *(pos-1)= '\0'; - return; -} - -int level = 0; -char levelbuffer[512]; - -void adjust_levelbuffer() -{ - int i; - for(i=0; i<level;i++) { - levelbuffer[i] = '\t'; - } - levelbuffer[i] = '\0'; -} - -void freestring( char const * ptr ) -{ - alloc_cnt--; - adjust_levelbuffer(); - if ( bVerbose ) - fprintf(stdout,"%sinfo: freestring line %d\n",levelbuffer, __LINE__); - free(const_cast< char * >(ptr)), ptr = NULL; -} - -void makestring(char** newstr, char* oldstr) -{ - alloc_cnt++; - adjust_levelbuffer(); - if ( bVerbose ) - fprintf(stdout,"%sinfo: makestring on line %d\n",levelbuffer,__LINE__); - strcpy( (*newstr=(char*)malloc(strlen(oldstr)+1)), oldstr); - if( *newstr==NULL ) { - fprintf( stderr, - "error: cannot malloc for makestring() alloc_cnt==%d \n", alloc_cnt); - exit(1); - } -} - -#ifndef WNT -int strcmpi(char const * stra, char const * strb) -{ - // like strcmp() but case insensitive - size_t i; - char a,b; - for(i=0; ;i++){ - a = (char) tolower(stra[i]); - b = (char) tolower(strb[i]); - if( a < b ) - return -1; - if( a > b ) - return 1; - if( a == '\0' && b == '\0' ) - return 0; - } -} -#endif - -/* variables for listfile ( with project + pathname of src file ) */ -char* listfilename; -#define MAXSRCFILES 2048 -char* filename_tab[MAXSRCFILES]; -char* project_tab[MAXSRCFILES]; -int tab_entries = 0; -//int fileno = 0; /* currently used filenumber */ - -/* globale variablen */ -FILE* outfile; -char const *filename = ""; //incl. path -//char *basename = ""; -char const *project = ""; -char const *subpath = ""; //from project name downwards like source\ui\xxx.src - -int firstprint = 1; - -int in_define = 0; - -class ident_ring -{ - #define MAXRING 2 - //nicht aendern wg externer Abfrage ->size() == 2 - - char* ring[MAXRING]; - int ringpos; - int last; - int broken; -public: - ident_ring() { - last = ringpos = -1; - for(int i=0; i<MAXRING;i++) - ring[i]=NULL; - broken = 0; - } - - void set_zero() { - last = ringpos = -1; - for(int i=0; i<MAXRING;i++) { - if( ring[i] != NULL ) - freestring( ring[i] ); - ring[i]=NULL; - } - broken = 0; - } - void set_broken() { broken = 1; } - int size() { - if( ringpos == -1 ) - return 0; - - if( broken) { - if( ringpos==0 ) - return 0; - else - return 1; - } else { - if( ringpos==0 ) - return 1; - else - return 2; - } - } - - char* extract_last(){ - if( last == -1 ) { - return NULL; - } else { - char* ttt=ring[last]; - ring[last]=NULL; - return ttt; - } - } - - char* extract_actual() { - if(ringpos == -1) { - return NULL; - } else { - char *ttt=ring[ringpos]; - ring[ringpos]=NULL; - return ttt; - } - } - - void set(char* id) { - ringpos= (++ringpos) % MAXRING; - if( ring[ringpos] != NULL ) - freestring( ring[ringpos] ); /*otherwise: memory lost*/ - ring[ ringpos ] = id; - if ( bVerbose ) - fprintf(stdout, - "info: ring[%d] == %s broken==%d \n" - ,ringpos,ring[ringpos],broken - ); - - if( !(ringpos==0 && last==-1) ) - last = (++last) % MAXRING; - } -}; - - -/* Notnagel: die letzten identifier/number merken, fuer klasse & globalID */ -ident_ring *ring; - -// -typedef int token; -// -#define TOK_SEMICOLON ';' -#define TOK_EQUAL '=' -#define TOK_OPENBRACKET '[' -#define TOK_CLOSEBRACKET ']' -#define TOK_OPENBRACE '{' -#define TOK_CLOSEBRACE '}' -#define TOK_KOMMA ',' -#define TOK_LESS '<' -#define TOK_GREATER '>' -#define TOK_OPENPAREN '(' -#define TOK_CLOSEPAREN ')' -#define TOK_PLUS '+' -#define TOK_MINUS '-' -#define TOK_STAR '*' -#define TOK_SLASH '/' -// -#define TOK_POSorSIZE 146 -#define TOK_POSSIZE 147 -#define TOK_TEXTTAG 148 -#define TOK_IDNUM 149 -// -#define TOK_EXTRADATA 151 -#define TOK_TEXT 152 -#define TOK_MESSAGE 153 -#define TOK_HELPTEXT 154 -#define TOK_TRUE 155 -#define TOK_FALSE 156 -// -#define TOK_RESID 180 -// -#define TOK_STRING 190 -// -#define TOK_INVALID (-1) - -token lasttoken = TOK_INVALID; - - - - -#define UNDEF (-1) - -char *globalID = const_cast< char * >(""); -char const *globalKLASSE = NULL; - -void reset_globalID() { - // - if( globalID && (strlen(globalID) > 0 ) ) { - freestring( globalID ); - globalID = const_cast< char * >(""); - } -} - - -//-------------------------------------------------------------------- -class resource -{ -private: - resource ( const resource& ); //copy-ctor soll keiner benutzen - void operator=( const resource& ); // zuweisung auch nicht -public: - resource(); - ~resource(); -public: - int lineno; - token lasttoken; //before opening { - char const *klasse ; - char *localID; - char *helpID; - int residfound; -}; - -resource *ares ; /* aktuell bearbeitete resource */ - -resource::~resource() -{ - if( klasse != NULL ) freestring(klasse); - if( localID != NULL ) freestring(localID); - if( helpID != NULL ) freestring(helpID); - -} - -resource::resource() -{ - lineno = UNDEF; - lasttoken= TOK_INVALID; - klasse = NULL ; - localID = NULL ; - helpID = NULL ; - residfound= 0; -} - -int residfound = 0; // "Identifier = " auf momentanem level gefunden - -#define MAXSTACK 32 -resource* stack[MAXSTACK]; /* resource stack */ -#define EMPTYSTACK (-1) -int stackptr = EMPTYSTACK; - -void push_resource( resource* r ) -{ - stackptr++; - if( stackptr >= MAXSTACK ) { - fprintf( stderr, "error: resource stack is full %d \n", stackptr); - exit(1); - } - stack[ stackptr ] = r; -} - -resource* pop_resource() -{ - if( stackptr < 0 ) { - fprintf( stderr, "error: pop resource from empty stack \n"); - exit(1); - } - return stack[ stackptr-- ]; -} - -/* forward */ -int eat_comment(); -int eat_cpp_comment(); - -/*===================================================*/ -// -// '+' im identifier wg basic\source\classes\sb.src -// -// '<' im identifier wg sc subtdlg.src -// -// '&' im identifier wg scerror.src so2..nocode.src svxerr.src scwarngs.src - - -//string (\"[^"]*\") alter einfacher string ohne " - -%} - -/* 89012 */ -%option never-interactive - - -simple ([^\n\"]*) -%p 7000 -string \"{simple}((((\\\\)*(\\\"))?){simple})*\" - -%x MACRO_STATE - -%x EXCLUDE_STATE -resfilelist ([Ff][Ii][Ll][Ee][Ll][Ii][Ss][Tt]) -resstringlist ([Ss][Tt][Rr][Ii][Nn][Gg][Ll][Ii][Ss][Tt]) -resstring ([Ss][Tt][Rr][Ii][Nn][Gg]) - -identifier ([a-z_A-Z]+[a-z_A-Z<+&0-9]*) -number (([0-9]+)|(0x[0-9a-fA-F]+)) -residentifier ([Ii][Dd][Ee][Nn][Tt][Ii][Ff][Ii][Ee][Rr]) -w ([ \t\n]*) -wspecial ([\\ \t\n]*) -texttag (([Tt][Ii][Tt][Ll][Ee])|([Tt][Ee][Xx][Tt])|([Mm][Ee][Ss][Ss][Aa][Gg][Ee])) -qhelptag (([Qq][Uu][Ii][Cc][Kk])?([Hh][Ee][Ll][Pp][Tt][Ee][Xx][Tt])) -langtag ([a-zA-Z_]+) -helptag ([Hh][Ee][Ll][Pp][Ii][Dd]) -helpid ([a-zA-Z_0-9]+) -num2tag (([Pp][Oo][Ss])|([Ss][Ii][Zz][Ee])) -num4tag (([Pp][Oo][Ss][Ss][Ii][Zz][Ee])) - -%% -[ \t] { - /* forget whitespace */; - } - -^[ \t]*#include.*\.src[">].* { - char NewFile[255]; //long names??? - int i, j, GetIt; - - GetIt = 0; - j = 0; - nInputFileDepth++; -// nicht schoen aber geht... - for (i = 0; yytext[i+1] != 0; i++) - { - if ( GetIt == 1 ) - { - if ( yytext[i] == '"' || yytext[i] == '>' ) - GetIt = 0; - else - NewFile[j++] = yytext[i]; - } - if ( yytext[i] == '"' || yytext[i] == '<' ) - GetIt = 1; - } - NewFile[j] = '\0'; - FILE* pFile = NULL; - pFile = fopen( NewFile, "r" ); - if( pFile == NULL ) { - fprintf( stdout, "warning: could not open inputfile %s \n", NewFile ); - // try the new *_tmpl.src version instead - // this hack was introduced to allow localisation of included src files - const char* sStrTmpl = "_tmpl"; - j -= 4; - for ( i = 0 ; i <5 ; i++,j++ ) - { - NewFile[j+5] = NewFile[j]; - NewFile[j] = sStrTmpl[i]; - } - NewFile[j+4] = '\0'; - fprintf( stderr, "trying inputfile %s \n", NewFile ); - pFile = fopen( NewFile, "r" ); - if( pFile == NULL ) { - fprintf( stderr, "error: could not open inputfile %s \n", NewFile ); - exit(1); - } - } - InputFiles[ nInputFileDepth ] = yy_create_buffer( pFile, YY_BUF_SIZE ); - yy_switch_to_buffer( InputFiles[ nInputFileDepth ] ); - - if ( bVerbose ) - fprintf( stdout, "%s //ATTENTION!! %s gets included here\n", yytext, NewFile ); - fprintf( outfile, "// %s //ATTENTION!! %s gets included here\n\n", yytext, NewFile ); - } - -^[ \t]*#include.* { - fprintf( outfile, "%s\n\n", yytext ); - } - -^[ \t]*#(if|ifdef|ifndef|elif).* { - ; - } - -^[ \t]*#else { - ; - } -^[ \t]*#endif { - ; - } - -^[ \t]*#(undef|error|pragma).* { - ; - } - -^[ \t]*#define { - fprintf( outfile, "%s", yytext ); - BEGIN MACRO_STATE; - } - -<INITIAL,MACRO_STATE>"/*" { - eat_comment(); - } - -<INITIAL,MACRO_STATE>"//" { - eat_cpp_comment(); - } - -<MACRO_STATE>\n { - fprintf( outfile, "%s\n", yytext ); - BEGIN INITIAL; - } - -<MACRO_STATE>\\\n { - fprintf( outfile, "\\\n" ); - ;/* macro schadet nicht, koennte gebraucht werden */ - } - - -<MACRO_STATE>. { - fprintf( outfile, "%s", yytext ); - ;/* ignore all this unused input */ - } - -";" {ring->set_zero(); lasttoken = TOK_SEMICOLON; } -"=" {ring->set_zero(); lasttoken = TOK_EQUAL; } -"[" {ring->set_broken(); lasttoken = TOK_OPENBRACKET; } -"]" {ring->set_broken(); lasttoken = TOK_CLOSEBRACKET; } - - -<EXCLUDE_STATE>"{" { - exclude_bracelevel += 1; - if ( bVerbose ) - fprintf( stdout,"info: lev %d : found {\n", exclude_bracelevel ); - } - - -\\\n | -"{" { - // define continues - // or a brace opens a block - - if( in_define && !strcmp(yytext,"\\\n") ) { - - if( in_define++ == 1 ) - ;// keep on working - else - goto blockend; - } - - level++; - if( ares != NULL ){ - if( level > 1 ) - dotappend( globalID, ares->localID ); - ares->residfound = residfound; - push_resource( ares ); - } - ares = new resource; - - residfound = 0; - ares->residfound = 0; - - ares->lineno = yylineno; - ares->lasttoken = lasttoken; - if( ring->size() == 2 ) { - ares->klasse = ring->extract_last(); - ares->localID = ring->extract_actual(); - } else if(ring->size() == 1) { - ares->klasse = ring->extract_actual(); - } - if( level==1 ){ //Ausnahme: Resource auf Ebene 1 - globalID= ares->localID; - ares->localID = NULL; - globalKLASSE= ares->klasse; - } - - if ( bVerbose ) - fprintf(stdout,"info: { level: %d\n", level); - - lasttoken = TOK_OPENBRACE; - ring->set_zero(); - } - -<EXCLUDE_STATE>"}" { - //----------------------------- - exclude_bracelevel -= 1; - if ( bVerbose ) - fprintf( stdout,"info: lev %d : found }\n", exclude_bracelevel ); - if( exclude_bracelevel==1 ) { - BEGIN INITIAL; - exclude_bracelevel=0; - } - } - - -\n | -"}" { - if ( bVerbose ) - fprintf(stdout,"info: } level: %d\n",level); - - if( !strcmp(yytext,"}") ) - ; - else if( in_define && (!strcmp(yytext,"\n") )) { - if( in_define==1 ) { - //no continuation line for #define - in_define=0; - goto blockend; - } - else { - //there was a continuation line for #define - in_define=0; - } - } - else - goto blockend; - - // ares ausgeben - if( ares != NULL ) { - - #define LEER "leer" - char const * globklasse = - globalKLASSE==NULL ? LEER:globalKLASSE; - char const * local = - ares->localID==NULL ? LEER:ares->localID; - char const * klasse = - ares->klasse==NULL ? LEER:ares->klasse; - char const * glob = - globalID==NULL ? LEER:globalID; - - - //wg. Starview-Klasse String in ehdl.c und doc.c - // wenn generierte C++-Quellen compiliert werden - // - //if( !strcmp(globklasse,"String" )) globklasse = "string"; - //if( !strcmp(klasse,"String" )) klasse = "string"; - - - //--------------------------------------------------- - // generate the body of a new C main program, - // which is filled with printf statements - // to compute (via preproseccor & compiler) - // the codenumbers for resource names like menu$RID_SVX$xyz - - if( firstprint ) { - firstprint=0; - fprintf(outfile, "#include \"starview.hid\" \n\n"); - fprintf(outfile, " int main() { \n\n\n"); - } - - char globunder[256]; - strcpy(globunder,glob); - dot2underline( globunder ); - char const * globsuffix = strrchr(glob,'.'); - globsuffix = globsuffix==NULL ? glob:globsuffix+1; - - if( ares->helpID ) { - fprintf( outfile,"\n\t printf(\"%s \\t %cs %cu \\n\",\n", - ares->helpID,'%','%'); - fprintf(outfile,"\t\"HelpID\", (%s) ); \n", ares->helpID); - } - else if( ares->localID ) { - fprintf( outfile,"\n\t printf(\"%s:%s:%s:%s \\t %cs %cu %cs %cu \\n\",\n", - project,klasse,globunder,local,'%','%','%','%'); - fprintf( outfile,"\t\"Norm %s\", (%s), \"%s\", (%s) );\n", - globklasse,globsuffix, klasse,local); - } - else if( (strcmpi("MenuItem",klasse)==0) || - (strcmpi("ToolBoxItem",klasse)==0) ) { - ; //no output (99% is a separator) - } - else { - fprintf( outfile,"\n\t printf(\"%s:%s:%s \\t %cs %cu %cs \\n\",\n", - project,klasse,globunder,'%','%','%'); - fprintf( outfile,"\t\"Norm %s\", (%s), \"%s\" );\n", - globklasse,globsuffix, klasse); - } - - delete ares; - } - - - // ein level zurueck - if( level == 1) { - reset_globalID(); - globalKLASSE = NULL; - } - level--; - ares = pop_resource(); - residfound = ares->residfound; - dotsubtract( globalID, ares->localID ); - - - // - lasttoken = TOK_CLOSEBRACE; - ring->set_zero(); - blockend: ; - } - -"," {ring->set_broken(); lasttoken = TOK_KOMMA; } - -"<" {ring->set_broken(); lasttoken = TOK_LESS; } -">" {ring->set_broken(); lasttoken = TOK_GREATER; } - -"(" {ring->set_broken(); lasttoken = TOK_OPENPAREN; } -")" {ring->set_broken(); lasttoken = TOK_CLOSEPAREN; } -"+" {ring->set_broken(); lasttoken = TOK_PLUS; } -"-" {ring->set_broken(); lasttoken = TOK_MINUS; } -"*" {ring->set_broken(); lasttoken = TOK_STAR; } -"/" {ring->set_broken(); lasttoken = TOK_SLASH; } - - -{helptag}{w}"="{w}{helpid}{w}";" { - - // extract text for helpid and put to ares - char* pos = strchr(yytext,'='); - size_t offset = strspn(pos+1," \t\n"); - char* start = pos+1+offset; - size_t offset2= strcspn( start, "; \t\n"); - char* end = start+offset2; - *end = '\0'; - char *helpid; - makestring( &helpid, start ); - ares->helpID = helpid; - } - -{residentifier}{w}"="[ \t\n]*({identifier}|{number}) { - ring->set_zero(); - lasttoken = TOK_RESID; - residfound=1; - - //extract resource id and store as localID - char *after = strrchr(yytext,'='); - char *resid = after + strspn(after,"= \t\n"); - char *localID; - makestring( &localID, resid ); - ares->localID = localID; - } - -{resfilelist} | -{resstring} | -{resstringlist} { - BEGIN EXCLUDE_STATE; - exclude_bracelevel = 1; - if ( bVerbose ) - fprintf( stdout,"info: lev %d : found exclusion\n", exclude_bracelevel ); - } - -^[ \t]*#define | -{number} | -{identifier} { - /* identifier/number in einem ring ablegen */ - char *identifier; - char *def=strstr(yytext,"#define"); - if( def ) { - in_define = 1; - makestring( &identifier, def+1 ); - } - else - makestring( &identifier, yytext ); - ring->set( identifier ); - lasttoken = TOK_IDNUM; - - } -<INITIAL,EXCLUDE_STATE>{string} { - ring->set_broken(); - lasttoken = TOK_STRING; - if ( bVerbose ) - fprintf(stdout, "%6s %11s %8d %s \n",project,filename,yylineno, yytext); - } - - -<INITIAL,EXCLUDE_STATE>. { if ( bVerbose ) fprintf( stdout,"warning: unused input on line %d of %s \n%s\n", - yylineno, filename, yytext); - } - -<EXCLUDE_STATE>\n { - ; //do nothing, ignore - } - - -%% - - -void makeversion( char* version ) -{ - char const *pos = strpbrk( Revision, "0123456789." ); - size_t siz = strspn( pos, "0123456789." ); - if( pos && siz ) { - strncpy(version, pos, siz); - strcat( version, " "); - } - else - strcpy( version," unknown " ); -} - -int main( int argc, char* argv[] ) -{ - static char const *Compiler = "HID-Compiler "; - static char const *Author = "OG "; - static char HIDCompiler[100]; - static char Version[100]; - - // check for switches given on the command line - if ( ( argc > 0 ) && ( 0 == strcmp( argv[0], "-verbose" ) ) ) - { - bVerbose = true; - for ( size_t i=0; i<argc-1; ++i ) - { - argv[i] = argv[i+1]; - --argc; - } - } - - makeversion( Version ); - strcpy( HIDCompiler, Compiler ); - strcat( HIDCompiler, Version ); - strcat( HIDCompiler, Author ); - if ( bVerbose ) - fprintf( stdout, "\n %s \n\n", HIDCompiler); - if(argc < 4) { - fprintf( - stderr, - "usage: hidc [-verbose] file.src file.c project\n" - "\n" - "You must give exactly 3 arguments.\n" - "1 - an existing SRC file.\n" - "2 - C file to be generated (which generates the HID file when run).\n" - "3 - the project name (an arbitrary name).\n\n" - ); - exit(1); - } - - project = argv[3]; - - char *outfilename = argv[2]; - if( (outfile=fopen( outfilename , "w" )) ==NULL ) { - fprintf(stderr,"error: could not open outputfile '%s' \n", outfilename); - exit(1); - } - - filename = argv[1]; - nInputFileDepth = 0; - FILE* pFile; - pFile = fopen( filename, "r" ); - if( pFile == NULL ) { - fprintf( stderr, "error: could not open inputfile %s \n", filename ); - exit(1); - } - InputFiles[ nInputFileDepth ] = yy_create_buffer( pFile, YY_BUF_SIZE ); - yy_switch_to_buffer( InputFiles[ nInputFileDepth ] ); - ring = new ident_ring; - ares = new resource; - - fprintf(outfile, "/* Generated from %s */\n\n", HIDCompiler ); - fprintf(outfile, "/* Source was: %s */\n", filename ); - - yylineno = 1; - yylex(); /* do the real work here */ - - if( firstprint ) { - fprintf(outfile, "#include \"starview.hid\" \n\n"); - fprintf(outfile, " int main() { \n\n\n"); - } - fprintf(outfile, "\nreturn 0;"); - fprintf(outfile, "\n} /*main*/\n"); - return 0; -} - -int yywrap() -{ - yy_delete_buffer( InputFiles[ nInputFileDepth ] ); - if ( nInputFileDepth == 0 ) - return 1;/* keine src files mehr */ - else - { - nInputFileDepth--; - fprintf(outfile, "// Done reading file\n\n"); - yy_switch_to_buffer( InputFiles[ nInputFileDepth ] ); - return 0; - } -} - -int eat_comment() -{ - int c; - int lastc = ' '; - while( (c=yyinput()) != EOF ) { - if( c=='\n') - ; - else if( c=='/' && lastc=='*' ) - break; /* end of comment found */ - lastc=c; - } - return 0; -} - -int eat_cpp_comment() -{ - int c; - while( (c=yyinput()) != EOF ) { - if( c=='\n') { - break; - } - } - if( c != EOF ) - unput(c); /* because next #.... line was not found */ - return 0; -} diff --git a/soltools/HIDCompiler/makefile.mk b/soltools/HIDCompiler/makefile.mk deleted file mode 100644 index 8c65fc09cd21..000000000000 --- a/soltools/HIDCompiler/makefile.mk +++ /dev/null @@ -1,63 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2000, 2010 Oracle and/or its affiliates. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# This file is part of OpenOffice.org. -# -# OpenOffice.org is free software: you can redistribute it and/or modify -# it under the terms of the GNU Lesser General Public License version 3 -# only, as published by the Free Software Foundation. -# -# OpenOffice.org 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 version 3 for more details -# (a copy is included in the LICENSE file that accompanied this code). -# -# You should have received a copy of the GNU Lesser General Public License -# version 3 along with OpenOffice.org. If not, see -# <http://www.openoffice.org/license.html> -# for a copy of the LGPLv3 License. -# -#************************************************************************* - -PRJ=.. - -PRJNAME=soltools -TARGET=hidc -TARGETTYPE=CUI -LIBTARGET=no -NO_DEFAULT_STL=TRUE -INCPRE=$(MISC) - -# --- Settings ----------------------------------------------------- - -.INCLUDE : $(PRJ)$/util$/makefile.pmk -.INCLUDE : settings.mk -.INCLUDE : libs.mk -CDEFS+= -DYY_NEVER_INTERACTIVE=1 - -UWINAPILIB=$(0) - -# --- Files -------------------------------------------------------- - -# HID compiler -APP1TARGET= $(TARGET) -APP1OBJS= $(OBJ)$/wrap_hidclex.obj -APP1DEPN= $(OBJ)$/wrap_hidclex.obj -APP1LIBSALCPPRT= - -DEPOBJFILES=$(APP1OBJS) - -# --- Targets ------------------------------------------------------ - -.INCLUDE : target.mk - -$(MISC)$/%_yy.cxx : %lex.l - flex -l -8 -o$@ $< - -$(OBJ)$/wrap_hidclex.obj: $(MISC)$/hidc_yy.cxx diff --git a/soltools/HIDCompiler/wrap_hidclex.cxx b/soltools/HIDCompiler/wrap_hidclex.cxx deleted file mode 100644 index 1eb79e80a5da..000000000000 --- a/soltools/HIDCompiler/wrap_hidclex.cxx +++ /dev/null @@ -1,31 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2000, 2010 Oracle and/or its affiliates. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org 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 version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_soltools.hxx" - -#include "hidc_yy.cxx" diff --git a/soltools/cpp/_nlist.c b/soltools/cpp/_nlist.c index 9144f2b7e15e..a71085bfbbf9 100644 --- a/soltools/cpp/_nlist.c +++ b/soltools/cpp/_nlist.c @@ -3,9 +3,6 @@ #include <string.h> #include "cpp.h" -extern int stgetopt(int, char *const *, const char *); -extern char *optarg; -extern int optind; extern int Cplusplus; Nlist *kwdefined; char wd[128]; diff --git a/soltools/cpp/_unix.c b/soltools/cpp/_unix.c index 5574bb3ecef7..5352f6f1f5f9 100644 --- a/soltools/cpp/_unix.c +++ b/soltools/cpp/_unix.c @@ -12,9 +12,15 @@ #include "cpp.h" +#if defined MACOSX || !defined HAVE_GETOPT extern int stgetopt(int, char *const *, const char *); -extern char *optarg, rcsid[]; +extern char *optarg; extern int optind; +#else +#include <getopt.h> +#endif + +extern char rcsid[]; int Pflag = 0; /* print no line information */ int Iflag = 0; /* print includes */ @@ -36,7 +42,11 @@ void Tokenrow tr; setup_kwtab(); +#if defined MACOSX || !defined HAVE_GETOPT while ((c = stgetopt(argc, argv, "NOPV:I:D:U:F:A:X:u:l:+")) != -1) +#else + while ((c = getopt(argc, argv, "NOPV:I:D:U:F:A:X:u:l:+")) != -1) +#endif switch (c) { case 'N': diff --git a/soltools/cpp/makefile.mk b/soltools/cpp/makefile.mk index 818c27028345..533cf9a91ab7 100644 --- a/soltools/cpp/makefile.mk +++ b/soltools/cpp/makefile.mk @@ -45,7 +45,6 @@ LIBSALCPPRT=$(0) OBJFILES= \ $(OBJ)$/_cpp.obj \ $(OBJ)$/_eval.obj \ - $(OBJ)$/_getopt.obj \ $(OBJ)$/_include.obj \ $(OBJ)$/_lex.obj \ $(OBJ)$/_macro.obj \ @@ -54,6 +53,15 @@ OBJFILES= \ $(OBJ)$/_tokens.obj \ $(OBJ)$/_unix.obj +# nonstandard cpp options needed for Mac (-isysroot), +# needs the custom stgetopt defined here :/ +.IF "$(OS)" == "MACOSX" || "$(HAVE_GETOPT)" != "YES" +OBJFILES += $(OBJ)$/_getopt.obj +.ENDIF +.IF "$(HAVE_GETOPT)" == "YES" +CDEFS += -DHAVE_GETOPT +.ENDIF + APP1TARGET = $(TARGET) .IF "$(GUI)" != "OS2" APP1STACK = 1000000 diff --git a/soltools/javadep/javadep.c b/soltools/javadep/javadep.c index d840e6606689..d0517d832f45 100644 --- a/soltools/javadep/javadep.c +++ b/soltools/javadep/javadep.c @@ -138,12 +138,14 @@ void usage(void); void err_quit(const char *, ...); void silent_quit(void); +#ifdef WNT /* poor man's getopt() */ int simple_getopt(char *pargv[], const char *poptstring); char *optarg = NULL; int optind = 1; int optopt = 0; int opterr = 0; +#endif uint8 read_uint8(const file_t *pfile) @@ -731,6 +733,7 @@ usage() pprogname); } +#ifdef WNT /* my very simple minded implementation of getopt() * it's to sad that getopt() is not available everywhere * note: this is not a full POSIX conforming getopt() @@ -748,7 +751,7 @@ int simple_getopt(char *pargv[], const char *poptstring) char *popt; int c = parg[1]; if ( (popt = strchr(poptstring, c)) == NULL ) { - optopt = c; + optopt = c; if ( opterr ) fprintf(stderr, "Unknown option character `\\x%x'.\n", optopt); return '?'; @@ -768,7 +771,7 @@ int simple_getopt(char *pargv[], const char *poptstring) } return -1; } - +#endif int CDECL main(int argc, char *argv[]) @@ -817,7 +820,11 @@ main(int argc, char *argv[]) opterr = 0; pincs = allocate_growable(); +#ifdef WNT while( (c = simple_getopt(pall_argv, ":i:I:s:S:o:OhHvV")) != -1 ) { +#else + while( (c = getopt(nall_argc, pall_argv, ":i:I:s:S:o:OhHvV")) != -1 ) { +#endif switch(c) { case 'i': case 'I': diff --git a/soltools/mkdepend/def.h b/soltools/mkdepend/def.h index ac04357212e2..4133326ddb70 100644 --- a/soltools/mkdepend/def.h +++ b/soltools/mkdepend/def.h @@ -60,8 +60,9 @@ in this Software without prior written authorization from the X Consortium. #endif #define MAXDEFINES 512 -#define MAXFILES 2048 /* Increased from 512. -mcafee */ - /* Increased from 1024. -mh */ +#define MAXFILES ( 1<<16 ) /* Increased from 512. -mcafee */ + /* Increased from 1024. -mh */ + /* Increased from 2048. -b_michaelsen */ #define MAXDIRS 64 #define SYMHASHSEED 131 /* 131 1313 13131 ... */ #define SYMHASHMEMBERS 64 /* must be 2^x to work right */ diff --git a/soltools/mkdepend/include.c b/soltools/mkdepend/include.c index 45d0730393a3..4446489ba259 100644 --- a/soltools/mkdepend/include.c +++ b/soltools/mkdepend/include.c @@ -71,15 +71,18 @@ struct inclist *inc_path(file, include, dot, incCollection) * If the path was surrounded by "" or is an absolute path, * then check the exact path provided. */ - if (!found && (dot || *include == '/')) { - - if ((exists_path(incCollection, include)) && stat(include, &st) == 0 && !( st.st_mode & S_IFDIR)) { - ip = newinclude(include, include); - found = TRUE; - } - else if (show_where_not) - warning1("\tnot in %s\n", include); - } +// FIXME: creates duplicates in the dependency files if absolute paths are +// given, which certainly is not the intended behavior. Also it slows down +// makedepend performance considerably. +// if (!found && (dot || *include == '/')) { +// +// if ((exists_path(incCollection, include)) && stat(include, &st) == 0 && !( st.st_mode & S_IFDIR)) { +// ip = newinclude(include, include); +// found = TRUE; +// } +// else if (show_where_not) +// warning1("\tnot in %s\n", include); +// } /* * See if this include file is in the directory of the diff --git a/soltools/prj/build.lst b/soltools/prj/build.lst index 73611addf782..578723b0e09d 100644 --- a/soltools/prj/build.lst +++ b/soltools/prj/build.lst @@ -10,5 +10,4 @@ so soltools\javadep nmake - all so_jvdep so_mkdep so_adjvis.u NULL so soltools\support nmake - all so_supp so_mkdep so_adjvis.u NULL so soltools\giparser nmake - all so_gip so_supp so_adjvis.u NULL so soltools\adjustvisibility nmake - u so_adjvis so_mkdep NULL -so soltools\HIDCompiler nmake - all so_hidc so_mkdep so_adjvis.u so_wunistd.n NULL so soltools\testhxx nmake - all so_testhxx so_mkdep NULL diff --git a/soltools/prj/d.lst b/soltools/prj/d.lst index ee3ae5e2f907..970805f5d60c 100644 --- a/soltools/prj/d.lst +++ b/soltools/prj/d.lst @@ -8,6 +8,4 @@ ..\%__SRC%\bin\cpp.exe %_DEST%\bin%_EXT%\cpplcc.exe ..\%__SRC%\bin\cpp %_DEST%\bin%_EXT%\cpp.lcc ..\%__SRC%\inc\unistd.h %_DEST%\inc%_EXT%\unistd.h -..\%__SRC%\bin\hidc.exe %_DEST%\bin%_EXT%\hidc.exe -..\%__SRC%\bin\hidc %_DEST%\bin%_EXT%\hidc ..\%__SRC%\bin\testhxx* %_DEST%\bin%_EXT%\testhxx* |