Beispiel #1
0
void __stdcall our_callback(DWORD trap_rec_ptr)
{

    EnterCriticalSection(&crit_sec);
    wipe_file( (struct trap_record *)  trap_rec_ptr);
    release_rec(trap_rec_ptr);
    LeaveCriticalSection(&crit_sec);
}
Beispiel #2
0
int sor$sort_merge (long * context) {
  struct sor_sort_merge * sort_merge_p = &sort_merge;
  if (context) {
    sort_merge_p = *context;
  }
  int i, j;
  for (i = 0; i < sort_merge_p->filidx; i++) {
    struct dsc$descriptor * d = sort_merge_p->fil[i];
    void * file = fopen (d->dsc$a_pointer, "r");
    char buf[sort_merge_p->lrl];
#if 0
    int rd;
    for ( ; ; ) {
      rd = read (fd, buf, 132);
      if (rd == 0) break;
    }
#else
    while (fgets(buf, sort_merge_p->lrl, file)) {
#endif
      struct dsc$descriptor dsc;
      dsc.dsc$w_length = strlen(buf) - 1;
      dsc.dsc$a_pointer = buf;
      sor$release_rec(&dsc, 0);
    }
    fclose(file);
  }
  for (i = sort_merge_p->sortidx - 1; i >= 0; i--) {
    for (j = 1; j <= i; j++) {
      if (sort_merge_p->key_buffer == 0) {
	int (*compare)() = my_compare;
	if (sort_merge_p->user_compare)
	  compare = sort_merge_p->user_compare;
	if (compare (sort_merge_p->sort[j - 1], sort_merge_p->sort[j]) > 0) {
	  myswap(&sort_merge_p->sort[j - 1], &sort_merge_p->sort[j]);
	}
      } else {
	int (*compare)() = my_compare_o_n;
	short * key_buffer = sort_merge_p->key_buffer;
	int num = *key_buffer++;
	int cmp = 0;
	for ( ; num && cmp == 0; num-- ) {
	  int type = *key_buffer++; // unused
	  int order = *key_buffer++; // unused
	  int offset = *key_buffer++;
	  int len = *key_buffer++;
	  cmp = compare (sort_merge_p->sort[j - 1], sort_merge_p->sort[j], offset, len);
	}
	if (cmp > 0)
	  myswap(&sort_merge_p->sort[j - 1], &sort_merge_p->sort[j]);
      }
    }
  }
  return SS$_NORMAL;
}