int isOlder2(char *date1, char *date2) { int year[2], mon[2], day[2], i, ans; if (formatValidate2(date1) == -1 || formatValidate2(date2) == -1)return -1; day[0] = (date1[0] - 48) * 10 + (date1[1] - 48); mon[0] = (date1[3] - 48) * 10 + (date1[4] - 48); year[0] = (date1[6] - 48) * 1000 + (date1[7] - 48) * 100 + (date1[8] - 48) * 10 + (date1[9] - 48); day[1] = (date2[0] - 48) * 10 + (date2[1] - 48); mon[1] = (date2[3] - 48) * 10 + (date2[4] - 48); year[1] = (date2[6] - 48) * 1000 + (date2[7] - 48) * 100 + (date2[8] - 48) * 10 + (date2[9] - 48); if (!validate2(day[0], mon[0], year[0]))return -1; if (!validate2(day[1], mon[1], year[1]))return -1; ans = compare2(year[0], year[1]); if (ans != -1)return ans; else { ans = compare2(mon[0], mon[1]); if (ans != -1)return ans; else { ans = compare2(day[0], day[1]); if (ans != -1)return ans; return 0; } } }
int compareDates2(char *date1, char *date2) { int y1, m1, d1, y2, m2, d2, compareValue; y1 = getInt2(date1, 6, 9); y2 = getInt2(date2, 6, 9); compareValue = compare2(y1, y2); if (compareValue != 0) return compareValue; m1 = getInt2(date1, 3, 4); m2 = getInt2(date2, 3, 4); compareValue = compare2(m1, m2); if (compareValue != 0) return compareValue; d1 = getInt2(date1, 0, 1); d2 = getInt2(date2, 0, 1); compareValue = compare2(d1, d2); return compareValue; }
int main(){ int a,at,aa[3],b,bt,bb[3],c,ct,cc[3],i,j,re1=0,re2=0,re3=0; scanf("%d %d",&a,&at); for(i=1;i<=at;i++){ scanf("%d",&aa[i]); } scanf("%d %d",&b,&bt); for(i=1;i<=bt;i++){ scanf("%d",&bb[i]); } scanf("%d %d",&c,&ct); for(i=1;i<=ct;i++){ scanf("%d",&cc[i]); } for(i=1;i<=at;i++){ for(j=1;j<=bt;j++){ re1=re1+compare1(aa[i],bb[j]); } } if(re1>0){ printf("time conflicts! %d and %d\n",a,b); } for(i=1;i<=bt;i++){ for(j=1;j<=ct;j++){ re2=re2+compare2(bb[i],cc[j]); } } if(re2>0){ printf("time conflicts! %d and %d\n",b,c); } for(i=1;i<=at;i++){ for(j=1;j<=ct;j++){ re3=re3+compare3(aa[i],cc[j]); } } if(re3>0){ printf("time conflicts! %d and %d\n",a,c); } if((re1+re2+re3)==0){ printf("no time conflicts!\n"); } return 0; }
struct transaction * mergeSortedArrays(struct transaction *A, int ALen, struct transaction *B, int BLen) { if (ALen < 1 || BLen < 1 || A == NULL || B == NULL) return NULL; int TLen = ALen + BLen, i = 0, j = 0, k = 0, value; struct transaction *result = (struct transaction*)calloc(TLen, sizeof(struct transaction)); while (i != ALen && j != BLen)// copies the values into result array in ascending order { value = compare2(A[i].date, B[j].date); if (value == 0) { result[k++] = A[i++]; result[k++] = B[j++]; } else if (value == 1) { result[k++] = A[i++]; } else if (value == 2) { result[k++] = B[j++]; } } if (i < ALen) { while (i != ALen) { result[k++] = A[i++]; } } else if (j != BLen) { while (j != BLen) { result[k++] = B[j++]; } } return result; }
int binarySearch(struct transaction *Arr, int st, int end, char *date){ if (st > end) return -1; int mid = (st + end) / 2; int flag = (compare2(Arr[mid].date, date)); if (flag == 0) { return mid; } else if (flag > 0) return binarySearch(Arr, st, mid - 1, date); else return binarySearch(Arr, mid + 1, end, date); }
static void tst1(void) { cql_transform_t ct = cql_transform_create(); YAZ_CHECK(compare(ct, "abc", "abc")); YAZ_CHECK(compare(ct, "\"a b c\"", "\"a b c\"")); YAZ_CHECK(compare(ct, "@and a b", "a and b")); YAZ_CHECK(compare(ct, "@or a @and b c", "a or (b and c)")); YAZ_CHECK(compare(ct, "@or @and a b @and c d", "(a and b) or (c and d)")); YAZ_CHECK(compare(ct, "@or @or a b @or c d", "(a or b) or (c or d)")); YAZ_CHECK(compare(ct, "@and @and a b @and c d", "(a and b) and (c and d)")); YAZ_CHECK(compare(ct, "@attr 1=field abc", "field=abc")); YAZ_CHECK(compare2(ct, "@attr 1=4 abc", 0, 114)); /* should fail */ cql_transform_define_pattern(ct, "index.title", "1=4"); YAZ_CHECK(compare(ct, "@attr 1=4 abc", "title=abc")); cql_transform_define_pattern(ct, "index.foo", "1=bar"); YAZ_CHECK(compare(ct, "@attr 1=bar abc", "foo=abc")); cql_transform_close(ct); }
void test1() { // for float. const float abst = 1e-7f; const float relt = 1e-6f; // 1e-5f > rel > 1e-6f std::cout << "case 1-a" << std::endl; compare2(0.000000f, 0.0000001f, abst, relt); compare2(1.000000f, 1.000001f, abst, relt); compare2(10.00000f, 10.00001f, abst, relt); compare2(100.0000f, 100.0001f, abst, relt); compare2(1000.000f, 1000.001f, abst, relt); compare2(10000.00f, 10000.01f, abst, relt); compare2(100000.0f, 100000.1f, abst, relt); // x std::cout << "case 2-a" << std::endl; compare2(1.000000f, 0.999999f, abst, relt); // x compare2(10.00000f, 9.999990f, abst, relt); compare2(100.0000f, 99.99990f, abst, relt); compare2(1000.000f, 999.9990f, abst, relt); compare2(10000.00f, 9999.990f, abst, relt); compare2(100000.0f, 99999.90f, abst, relt); // x }
static void tst2(void) { WRBUF w = wrbuf_alloc(); cql_transform_t ct = 0; const char *srcdir = getenv("srcdir"); if (srcdir) { wrbuf_puts(w, srcdir); wrbuf_puts(w, "/"); } wrbuf_puts(w, "../etc/pqf.properties"); ct = cql_transform_open_fname(wrbuf_cstr(w)); YAZ_CHECK(compare(ct, "@attr 1=4 abc", "dc.title=abc")); YAZ_CHECK(compare(ct, "@attr 1=4 @attr 4=108 abc", "dc.title=/exact abc")); YAZ_CHECK(compare(ct, "@attr 1=4 @attr 3=1 @attr 6=1 abc", "dc.title=abc")); YAZ_CHECK(compare(ct, "@attr 1=4 @attr 4=1 @attr 6=1 abc", "dc.title=abc")); YAZ_CHECK(compare(ct, "@attr 1=1016 abc", "abc")); /* Date tests */ YAZ_CHECK(compare(ct, "@attr 1=30 @attr 2=1 1980", "dc.date<1980")); YAZ_CHECK(compare(ct, "@attr 1=30 @attr 2=2 1980", "dc.date<=1980")); YAZ_CHECK(compare(ct, "@attr 1=30 @attr 2=3 1980", "dc.date=1980")); YAZ_CHECK(compare(ct, "@attr 1=30 @attr 2=4 1980", "dc.date>=1980")); YAZ_CHECK(compare(ct, "@attr 1=30 @attr 2=5 1980", "dc.date>1980")); YAZ_CHECK(compare(ct, "@and @attr 1=30 @attr 2=4 234 @attr 1=30 @attr 2=2 1990", "dc.date>=234 and dc.date<=1990")); /* Truncation */ YAZ_CHECK(compare(ct, "@attr 5=1 water", "water*")); YAZ_CHECK(compare(ct, "@attr 5=2 water", "*water")); YAZ_CHECK(compare(ct, "@attr 5=3 water", "*water*")); YAZ_CHECK(compare(ct, "@attr 5=100 water", "water")); YAZ_CHECK(compare(ct, "@attr 5=102 water", "water")); YAZ_CHECK(compare(ct, "@attr 5=104 water", "water")); YAZ_CHECK(compare(ct, "@attr 5=102 wat.*er", "wat*er")); YAZ_CHECK(compare(ct, "@attr 5=104 wat?er", "wat*er")); YAZ_CHECK(compare(ct, "@attr 5=102 wat.er", "wat?er")); YAZ_CHECK(compare(ct, "@attr 5=104 wat#er", "wat?er")); YAZ_CHECK(compare(ct, "@attr 5=102 wat?er", "wat\\?er")); YAZ_CHECK(compare(ct, "@attr 5=104 wat*er", "wat\\*er")); YAZ_CHECK(compare(ct, "@attr 5=102 wat#er", "wat#er")); /* \. is 'eaten' by PQF parser */ YAZ_CHECK(compare(ct, "@attr 5=102 wat\\.er", "wat?er")); /* Escape sequences */ /* note: escape sequences that survive after PQF parse below */ YAZ_CHECK(compare(ct, "@attr 5=102 wat\\\\?er", "wat\\?er")); YAZ_CHECK(compare(ct, "@attr 5=104 wat\\\\?er", "wat\\?er")); YAZ_CHECK(compare(ct, "@attr 5=102 wat\\\\*er", "wat\\*er")); YAZ_CHECK(compare(ct, "@attr 5=104 wat\\\\*er", "wat\\*er")); YAZ_CHECK(compare(ct, "wat\\\\#er", "wat#er")); YAZ_CHECK(compare(ct, "@attr 5=100 wat\\\\#er", "wat#er")); YAZ_CHECK(compare(ct, "@attr 5=102 wat\\\\#er", "wat#er")); YAZ_CHECK(compare(ct, "@attr 5=104 wat\\\\#er", "wat#er")); YAZ_CHECK(compare(ct, "@attr 5=102 wat\\\\.er", "wat.er")); YAZ_CHECK(compare(ct, "@attr 5=104 wat\\\\.er", "wat.er")); /* Quoting */ YAZ_CHECK(compare(ct, "@attr 5=100 \"\"", "\"\"")); YAZ_CHECK(compare(ct, "@attr 5=1 \"\"", "\"*\"")); YAZ_CHECK(compare(ct, "@attr 5=2 \"\"", "\"*\"")); YAZ_CHECK(compare(ct, "@attr 5=3 \"\"", "\"**\"")); YAZ_CHECK(compare(ct, "@attr 5=102 \"\"", "\"\"")); YAZ_CHECK(compare(ct, "@attr 5=104 \"\"", "\"\"")); YAZ_CHECK(compare(ct, "@attr 5=1 \"water basket\"", "\"water basket*\"")); YAZ_CHECK(compare(ct, "@attr 5=2 \"water basket\"", "\"*water basket\"")); YAZ_CHECK(compare(ct, "@attr 5=3 \"water basket\"", "\"*water basket*\"")); /* Other */ YAZ_CHECK(compare(ct, "@attr 2=103 @attr 1=_ALLRECORDS 1", "cql.allRecords=1")); YAZ_CHECK(compare2(ct, "@attr 1=500 abc", 0, 114)); YAZ_CHECK(compare2(ct, "@attr 5=99 x", "99", 120)); cql_transform_close(ct); wrbuf_destroy(w); }
static int compare(cql_transform_t ct, const char *pqf, const char *cql) { return compare2(ct, pqf, cql, 0); }
int main(int argc, char **argv) { FILE *fp; char *fpname; int pos, i, j, bit, len; int header_found = 0; #ifdef CYGWIN _setmode(fileno(stdin), _O_BINARY); // _setmode(_fileno(stdin), _O_BINARY); setbuf(stdout, NULL); #endif fpname = argv[0]; ++argv; while ((*argv) && (!wavloaded)) { if ( (strcmp(*argv, "-h") == 0) || (strcmp(*argv, "--help") == 0) ) { fprintf(stderr, "%s [options] audio.wav\n", fpname); fprintf(stderr, " options:\n"); fprintf(stderr, " -v, --verbose\n"); fprintf(stderr, " -r, --raw\n"); fprintf(stderr, " -i, --invert\n"); return 0; } else if ( (strcmp(*argv, "-v") == 0) || (strcmp(*argv, "--verbose") == 0) ) { option_verbose = 1; } else if ( (strcmp(*argv, "-r") == 0) || (strcmp(*argv, "--raw") == 0) ) { option_raw = 1; } else if ( (strcmp(*argv, "-R") == 0) || (strcmp(*argv, "--RAW") == 0) ) { option_raw = 2; } else if ( (strcmp(*argv, "-i") == 0) || (strcmp(*argv, "--invert") == 0) ) { option_inv = 0x1; } else if ( (strcmp(*argv, "--auto") == 0) ) { option_auto = 1; } else { fp = fopen(*argv, "rb"); if (fp == NULL) { fprintf(stderr, "%s konnte nicht geoeffnet werden\n", *argv); return -1; } wavloaded = 1; } ++argv; } if (!wavloaded) fp = stdin; i = read_wav_header(fp); if (i) { fclose(fp); return -1; } gpx.sonde_id = -1; for (i = 0; i < 9; i++) { for (j = 0; j < 13; j++) dat_str[i][j] = ' '; } pos = FRAMESTART; while (!read_bits_fsk(fp, &bit, &len)) { if (len == 0) { // reset_frame(); if (pos > RAWBITFRAME_LEN-10) { // Problem wegen Interleaving print_frame();//byte_count header_found = 0; pos = FRAMESTART; } //inc_bufpos(); //buf[bufpos] = 'x'; continue; // ... } for (i = 0; i < len; i++) { inc_bufpos(); buf[bufpos] = 0x30 + bit; // Ascii if (!header_found) { header_found = compare2(); if (header_found < 0) option_inv ^= 0x1; } else { frame_rawbits[pos] = 0x30 + bit; // Ascii pos++; if (pos == RAWBITFRAME_LEN) { print_frame();//FRAME_LEN header_found = 0; pos = FRAMESTART; } } } } fclose(fp); return 0; }
int main(int argc, char **argv) { FILE *fp; char *fpname; char *lathome; char *lonhome; int pos, i, j, bit, len; int header_found = 0; #ifdef CYGWIN _setmode(fileno(stdin), _O_BINARY); // _setmode(_fileno(stdin), _O_BINARY); setbuf(stdout, NULL); #endif fpname = argv[0]; // 53.045390 8.893852 lathome = argv[3]; lonhome = argv[4]; /////////////////// MINI WEBSERVER BY http://blog.manula.org/2011/05/writing-simple-web-server-in-c.html int create_socket, new_socket; socklen_t addrlen; int bufsize = 1024; char *buffer = malloc(bufsize); struct sockaddr_in address; ////////////////////// ++argv; while ((*argv) && (!wavloaded)) { if ( (strcmp(*argv, "-h") == 0) || (strcmp(*argv, "--help") == 0) ) { fprintf(stderr, "%s [options] audio.wav\n", fpname); fprintf(stderr, " options:\n"); fprintf(stderr, " -v, --verbose\n"); fprintf(stderr, " -r, --raw\n"); fprintf(stderr, " -i, --invert\n"); return 0; } else if ( (strcmp(*argv, "-v") == 0) || (strcmp(*argv, "--verbose") == 0) ) { option_verbose = 1; } else if ( (strcmp(*argv, "-r") == 0) || (strcmp(*argv, "--raw") == 0) ) { option_raw = 1; } else if ( (strcmp(*argv, "-R") == 0) || (strcmp(*argv, "--RAW") == 0) ) { option_raw = 2; } else if ( (strcmp(*argv, "-i") == 0) || (strcmp(*argv, "--invert") == 0) ) { option_inv = 0x1; } else if ( (strcmp(*argv, "--auto") == 0) ) { option_auto = 1; } else { fp = fopen(*argv, "rb"); if (fp == NULL) { fprintf(stderr, "%s konnte nicht geoeffnet werden\n", *argv); return -1; } wavloaded = 1; } ++argv; } if (!wavloaded) fp = stdin; /////////////////// MINI WEBSERVER BY http://blog.manula.org/2011/05/writing-simple-web-server-in-c.html if ((create_socket = socket(AF_INET, SOCK_STREAM, 0)) > 0){ printf("The socket was created\n"); } address.sin_family = AF_INET; address.sin_addr.s_addr = INADDR_ANY; address.sin_port = htons(8081); if (bind(create_socket, (struct sockaddr *) &address, sizeof(address)) == 0){ printf("Binding Socket\n"); } if (listen(create_socket, 10) < 0) { perror("server: listen"); exit(1); } if ((new_socket = accept(create_socket, (struct sockaddr *) &address, &addrlen)) < 0) { perror("server: accept"); exit(1); } if (new_socket > 0){ printf("Connected to client\n"); } ////////////////////// i = read_wav_header(fp); if (i) { fclose(fp); close(new_socket); close(create_socket); return -1; } gpx.sonde_id = -1; for (i = 0; i < 9; i++) { for (j = 0; j < 13; j++) dat_str[i][j] = ' '; } pos = FRAMESTART; while (!read_bits_fsk(fp, &bit, &len)) { if (len == 0) { // reset_frame(); if (pos > RAWBITFRAME_LEN-10) { // Problem wegen Interleaving /////////////////// MINI WEBSERVER BY http://blog.manula.org/2011/05/writing-simple-web-server-in-c.html write(new_socket, "hello world\n", 12); ////////////////////// print_frame();//byte_count header_found = 0; pos = FRAMESTART; } //inc_bufpos(); //buf[bufpos] = 'x'; continue; // ... } for (i = 0; i < len; i++) { inc_bufpos(); buf[bufpos] = 0x30 + bit; // Ascii if (!header_found) { header_found = compare2(); if (header_found < 0) option_inv ^= 0x1; } else { frame_rawbits[pos] = 0x30 + bit; // Ascii pos++; if (pos == RAWBITFRAME_LEN) { print_frame();//FRAME_LEN header_found = 0; pos = FRAMESTART; } } } } fclose(fp); close(new_socket); close(create_socket); return 0; }