00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifdef HAVE_CONFIG_H
00033 #include "config.h"
00034 #endif
00035
00036 #include <stdlib.h>
00037 #include <unistd.h>
00038 #ifdef HAVE_GETOPT_H
00039 #include <getopt.h>
00040 #endif
00041 #include <locale.h>
00042
00043 #include <htString.h>
00044 #include <WordContext.h>
00045 #include <WordList.h>
00046
00047 static void action(WordContext* context, const String& file)
00048 {
00049 WordList *words = context->List();
00050 if(words->Open(file, O_RDWR | O_TRUNC) != OK) exit(1);
00051 if(words->Read(stdin) < 0) exit(1);
00052 if(words->Close() != OK) exit(1);
00053 delete words;
00054 }
00055
00056 static void usage()
00057 {
00058 fprintf(stderr, "usage: mifluzload [-zv] file\n");
00059 exit(1);
00060 }
00061
00062 int main(int argc, char *argv[])
00063 {
00064 if(argc < 2) usage();
00065
00066 setlocale(LC_ALL, "");
00067
00068
00069
00070
00071 extern int optind;
00072 int ch;
00073 bool isCompress=false;
00074 bool isV=false;
00075 while ((ch = getopt(argc, argv, "zvM:")) != EOF) {
00076 switch (ch) {
00077 case 'z':
00078 isCompress=true;
00079 break;
00080 case 'v':
00081 {
00082 isV=true;
00083
00084 }
00085 break;
00086 case 'M':
00087 {
00088 char *milo= (char*)malloc(strlen(optarg) + 32);
00089 sprintf(milo, "MIFLUZ_CONFIG=%s", optarg);
00090 if(putenv(milo) < 0) {
00091 perror("putenv");
00092 exit(1);
00093 }
00094 }
00095 break;
00096 default:
00097 usage();
00098 break;
00099 }
00100 }
00101
00102
00103
00104
00105 WordContext *context = new WordContext();
00106 if(!context) exit(1);
00107
00108 Configuration& config = context->GetConfiguration();
00109 context->ReInitialize();
00110 if (isCompress)
00111 config.Add("wordlist_compress", "true");
00112
00113 if (isV)
00114 {
00115 int value = config.Value("wordlist_verbose", 0);
00116 value++;
00117 char value_string[64];
00118 sprintf(value_string, "%d", value);
00119 config.Add("wordlist_verbose", value_string);
00120 }
00121 action(context, argv[optind]);
00122 delete context;
00123 }
00124