1 | /*************************************** 2 | $Revision: 1.1 $ 3 | 4 | Mirror module (mi). 5 | 6 | Status: NOT REVUED, NOT TESTED 7 | 8 | ******************/ /****************** 9 | Filename : access_control.c 10 | Author : ottrey@ripe.net 11 | OSs Tested : Solaris 12 | ******************/ /****************** 13 | Copyright (c) 1999 RIPE NCC 14 | 15 | All Rights Reserved 16 | 17 | Permission to use, copy, modify, and distribute this software and its 18 | documentation for any purpose and without fee is hereby granted, 19 | provided that the above copyright notice appear in all copies and that 20 | both that copyright notice and this permission notice appear in 21 | supporting documentation, and that the name of the author not be 22 | used in advertising or publicity pertaining to distribution of the 23 | software without specific, written prior permission. 24 | 25 | THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING 26 | ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL 27 | AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY 28 | DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN 29 | AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 30 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 31 | ***************************************/ 32 | #include <stdio.h> 33 | #include <sys/timeb.h> 34 | #include <glib.h> 35 | #include "thread.h" 36 | 37 | /*+ String sizes +*/ 38 | #define STR_S 63 39 | #define STR_M 255 40 | #define STR_L 1023 41 | #define STR_XL 4095 42 | #define STR_XXL 16383 43 | 44 | #define SLEEP_TIME 10 45 | 46 | static producer_run(void) { 47 | FILE *f1, *f2; 48 | GString *current_serial; 49 | int serial_curr=0; 50 | int serial_prev=0; 51 | int i, j; 52 | char line[STR_XL]; 53 | 54 | printf("Producer thread started.\n"); 55 | 56 | current_serial = g_string_sized_new(STR_L); 57 | 58 | for (i=0; i< 300; i++) { 59 | sleep(SLEEP_TIME); 60 | 61 | serial_prev = serial_curr; 62 | 63 | f1 = fopen("/ncc/db2/serials/current/RIPE.CURRENTSERIAL", "r"); 64 | fscanf(f1, "%d", &serial_curr); 65 | fclose(f1); 66 | 67 | if (serial_prev != 0) { 68 | for (j=serial_prev; j < serial_curr; j++) { 69 | printf("[%d][%d]\n", i, j); 70 | g_string_sprintf(current_serial, "/ncc/db2/serials/current/RIPE.%d", j); 71 | f2 = fopen((char *)current_serial->str, "r"); 72 | while (fgets(line, STR_XL, f2) != NULL) { 73 | printf("%s", line); 74 | } 75 | fclose(f2); 76 | } 77 | } 78 | } 79 | 80 | g_string_free(current_serial, TRUE); 81 | 82 | pthread_exit((void *)0); 83 | } /* producer_run() */ 84 | 85 | /* MI_init() */ 86 | /*++++++++++++++++++++++++++++++++++++++ 87 | Initialize the mirroring. 88 | 89 | More: 90 | +html+ <PRE> 91 | Authors: 92 | ottrey 93 | 94 | +html+ </PRE><DL COMPACT> 95 | +html+ <DT>Online References: 96 | +html+ <DD><UL> 97 | +html+ </UL></DL> 98 | 99 | ++++++++++++++++++++++++++++++++++++++*/ 100 | void MI_init() { 101 | pthread_t tid; 102 | pthread_attr_t attr; 103 | 104 | printf("Initialising mirroring.\n"); 105 | 106 | pthread_attr_init(&attr); /* initialize attr with default attributes */ 107 | pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); 108 | pthread_create(&tid, &attr, (void *(*)(void *))producer_run, NULL); 109 | } /* MI_init() */ 110 | 111 | int main(void) { 112 | MI_init(); 113 | sleep(1000); 114 | return 0; 115 | }