bin/load/loader.c
/* [<][>][^][v][top][bottom][index][help] */
FUNCTIONS
This source file includes following functions.
- stop_updates
- main
1 #include <sys/types.h>
2 #include <fcntl.h>
3 #include <signal.h>
4
5 #include <ud.h>
6 #include <ud_int.h>
7 #include <constants.h>
8 #include <properties.h>
9
10
11
12
13 void stop_updates()
/* [<][>][^][v][top][bottom][index][help] */
14 {
15 char print_buf[STR_M];
16
17 fprintf(stderr, "Updates interrupted..\n");
18 sprintf(print_buf, "%d", 0);
19 CO_set_const("UD.do_update", print_buf);
20 return;
21 }
22
23
24
25
26 /***********************************************
27 ******* MAIN **********************************
28 ***********************************************/
29
30
31 int main(int argc, char** argv) {
/* [<][>][^][v][top][bottom][index][help] */
32 FILE *file = NULL;
33 FILE *logfile;
34 char *logname="log.XXXX";
35 int c;
36 extern int optind;
37 extern char *optarg;
38 int errflg = 0;
39 int dummy_allowed;
40 int start_object;
41 int num_ok, num_failed;
42 char db_host[STR_M];
43 long num_skip=0;
44 struct _nrtm *nrtm=NULL;
45 UD_stream_t ud_stream;
46 Log_t log;
47 int current_serial=-1;
48 int load_pass=0;
49 int delay=1;
50 char *prop_file_name=NULL;
51 char *logfilename=NULL;
52 int do_update;
53
54 struct sigaction sig;
55
56 num_ok=0; num_failed=0;
57 dummy_allowed=0;
58
59 // strcpy(db_host, "rowan.ripe.net");
60
61 start_object = 1;
62
63 while ((c = getopt(argc, argv, "n:M:L:p:?")) != EOF)
64 switch (c) {
65 case 'n':
66 num_skip=atol(optarg);
67 break;
68 case 'p':
69 prop_file_name = optarg;
70 break;
71 case 'L':
72 load_pass=atoi(optarg);
73 dummy_allowed=1;
74 break;
75 case '?':
76 default :
77 errflg++;
78 break;
79 }
80 if (errflg) {
81 fprintf(stderr,"usage: standalone [-L pass#] [-n num_skip] [-p properties] file\n");
82 exit (2);
83 }
84
85
86 sig.sa_handler=stop_updates;
87 sigemptyset(&sig.sa_mask);
88 sig.sa_flags=SA_RESTART;
89 sigaction(SIGINT, &sig, NULL);
90 sigaction(SIGTERM, &sig, NULL);
91
92 /* 2. Load properties object from prop_file. */
93 fprintf(stderr,"Properties:\n");
94 if(prop_file_name==NULL)prop_file_name=".properties";
95 PR_load(prop_file_name);
96 fprintf(stderr,"%s\n", PR_to_string() );
97
98 /* 3. Set the constants. */
99 fprintf(stderr,"Constants:\n");
100 CO_set();
101 fprintf(stderr,"%s\n", CO_to_string() );
102
103
104 /* set mode of operation: unprotected (dummy allowed), updates, standalone */
105 ud_stream.ud_mode=7;
106
107 /* get error log facility */
108 logfilename=CO_get_nrtm_logfile();
109
110
111 /* Connect to the database */
112 fprintf(stderr, "D: Making SQL connection to %s@%s ...", CO_get_database(), CO_get_host());
113
114 ud_stream.db_connection=SQ_get_connection2();
115
116 if(! ud_stream.db_connection) {
117 fprintf(stderr, "D: ERROR: no SQL connection\n");
118 return;
119 }
120
121 fprintf(stderr, "OK\n");
122
123
124
125 ud_stream.nrtm=NULL;
126
127 ud_stream.log.logfile = fopen(logfilename, "a+");
128 ud_stream.log.num_ok=0;
129 ud_stream.log.num_failed=0;
130
131
132 if(optind<argc) file=fopen(argv[optind], "r"); else file=stdin;
133
134 if (file==NULL) { fprintf(stderr, "Cannot open data stream. Exiting..\n");
135 exit(1); }
136
137
138 ud_stream.stream=file;
139 ud_stream.num_skip=num_skip;
140 ud_stream.load_pass=load_pass;
141
142 /* Start to process the stream */
143
144 fprintf(stderr, "starting processing stream\n");
145 num_ok=UD_process_stream(&ud_stream);
146 fprintf(stderr, "processing stream finished\n");
147 fprintf(stderr, "%d objects processed\n", num_ok);
148
149 return(0);
150
151 } /* main() */
152
153
154
155