#include #include #include #include #define MAXLINE 4096 #define TAB 9 main (argc,argv) int argc; char *argv[]; { char inline[MAXLINE]; char *inLine; FILE *streamIn; FILE *streamOut; int i; /* menu item */ int pars; /* pointer to place in parHold */ char *startPtr; char *endPtr; int lineNum; int parHold[2000]; /* quick hack use vector for java */ char indentStr[MAXLINE]; unsigned int c; if ((argc < 1) || (strcmp(argv[1],"-h") == 0)) { printf("USAGE: %s bookmarks_file\n",argv[0]); printf("Create javascript menu file from bookmarks file\n"); return 1; } pars = 0; parHold[pars] = 0; lineNum = 0; if (streamOut = fopen("menu.js","w")) { if (streamIn = fopen(argv[1],"r")) { i = 0; indentStr[0] = TAB; indentStr[1] = 0; while( (inLine = fgets(inline, MAXLINE, streamIn)) != NULL) { lineNum++; /* printf("Read:%d:%s",lineNum,inline); */ if (strstr(inline,"
") != NULL) { i++; startPtr = strstr(inline,"

'); startPtr++; endPtr =strchr(startPtr,'<'); endPtr[0] = 0; /* fprintf(stdout,"%sref[%d] = \'.\';\n",indentStr,i); fprintf(stdout,"%snam[%d] = \'%s\';\n",indentStr,i,startPtr); fprintf(stdout,"%spar[%d] = %d;\n",indentStr,i,parHold[pars]); */ fprintf(streamOut,"%sref[%d] = \'.\';\n",indentStr,i); fprintf(streamOut,"%snam[%d] = \'%s\';\n",indentStr,i,startPtr); fprintf(streamOut,"%spar[%d] = %d;\n",indentStr,i,parHold[pars]); indentStr[pars] = TAB; pars++; indentStr[pars] = 0; parHold[pars] = i; /* fprintf(stdout,"parHold[%d] = %d;\n",pars,parHold[pars]); getchar(); */ } else { startPtr = strchr(inline,'"'); startPtr++; endPtr =strchr(startPtr,'"'); endPtr[0] = 0; /* fprintf(stdout,"%sref[%d] = \'.\';\n",indentStr,i); */ fprintf(streamOut,"%sref[%d] = \'%s\';\n",indentStr,i,startPtr); startPtr = strchr(&endPtr[1],'>'); startPtr++; endPtr =strchr(startPtr,'<'); endPtr[0] = 0; /* change all ' to ` could backslash them but this is quicker for now */ for (c = 0; c < strlen(startPtr); c++) if (startPtr[c] == '\'') startPtr[c] = '`'; /* fprintf(stdout,"%snam[%d] = \'%s\';\n",indentStr,i,startPtr); fprintf(stdout,"%spar[%d] = %d;\n",indentStr,i,parHold[pars]); */ fprintf(streamOut,"%snam[%d] = \'%s\';\n",indentStr,i,startPtr); fprintf(streamOut,"%spar[%d] = %d;\n",indentStr,i,parHold[pars]); } } if (strstr(inline,"") != NULL) { pars--; indentStr[pars] = 0; } } fprintf(streamOut,"var MAX = %d;\n",i + 1); fclose(streamIn); } else { perror(argv[1]); return 1; } fclose(streamOut); } else { perror("menu.js"); return 1; } return 0; }