Exemple #1
0
int open_cb(eio_req *req)
{
    eio_test();
    printf("open_cb = %d\n", EIO_RESULT(req));

    last_fd = EIO_RESULT(req);

    return 0;
}
Exemple #2
0
int
stat_cb (eio_req *req)
{
  struct stat *buf = EIO_STAT_BUF (req);

  if (req->type == EIO_FSTAT)
    printf ("fstat_cb = %d\n", EIO_RESULT (req));
  else
    printf ("stat_cb(%s) = %d\n", EIO_PATH (req), EIO_RESULT (req));

  if (!EIO_RESULT (req))
    printf ("stat size %d perm 0%o\n", buf->st_size, buf->st_mode & 0777);

  return 0;
}
Exemple #3
0
int readdir_cb(eio_req *req)
{
    eio_test();
    char *buf = (char *)EIO_BUF(req);

    printf("readdir_cb = %d\n", EIO_RESULT(req));

    if(EIO_RESULT(req) < 0) {
        return 0;
    }

    while(EIO_RESULT(req)--) {
        printf("readdir = <%s>\n", buf);
        buf += strlen(buf) + 1;
    }

    return 0;
}
Exemple #4
0
int
res_cb (eio_req *req)
{
  printf ("res_cb(%d|%s) = %d\n", req->type, req->data ? req->data : "?", EIO_RESULT (req));

  if (req->result < 0)
    abort ();

  return 0;
}
Exemple #5
0
int read_cb(eio_req *req)
{
    eio_test();
    unsigned char *buf = (unsigned char *)EIO_BUF(req);

    printf("read_cb = %d (%02x%02x%02x%02x %02x%02x%02x%02x)\n",
           EIO_RESULT(req),
           buf [0], buf [1], buf [2], buf [3],
           buf [4], buf [5], buf [6], buf [7]);

    return 0;
}
Exemple #6
0
static int
sendfile_open_cb (eio_req *req)
{
	callback_data_t *data = (callback_data_t *) req->data;
	data->fd = EIO_RESULT (req);

	if (data->flags & SEND_LENGTH) 
		eio_fstat (data->fd, 0, sendfile_stat_cb, data);
	else
		eio_sendfile (data->socket, data->fd, 0, data->length, 0, sendfile_complete_cb, data);

	return 0;
}
Exemple #7
0
int
readdir_cb (eio_req *req)
{
  if (EIO_RESULT (req) < 0)
    return 0;
  
  struct eio_dirent *ents = (struct eio_dirent *)req->ptr1;

  if ( ents->type != EIO_DT_DIR ) {
    struct stat leaf_st ;
    lstat(req->data, &leaf_st);
    if (!later_than(now, leaf_st.st_ctimespec)) {
       return 0;
    }
  }
  
  char *names = (char *)req->ptr2;
  
  if ( freelist ) {
    freelist = realloc(freelist, (req->result + freelist_len) * sizeof(char*));    
  } else {
    freelist = calloc(req->result, sizeof(char*));
  }
  
  int i;
  for (i = 0; i < req->result; ++i)
    {
      struct eio_dirent *ent = ents + i;
      char *name = names + ent->nameofs;
      freelist[freelist_len + i]  = 0;

      snprintf(pwd, MAXPATHLEN, "%s/%s", (char*)req->data, name);
      struct stat st;
      lstat(pwd, &st);
      if ( ent->type ==  EIO_DT_DIR) {
        eio_readdir_r(pwd, EIO_READDIR_DENTS|EIO_READDIR_DIRS_FIRST, 0, readdir_cb, freelist_len + i);
      }
      
      if (later_than(now, st.st_ctimespec)) {
         printf ("ls -l  %s/%s\n", (char*)req->data, name);
      }
  
    }
  freelist_len += req->result;

  return 0;
}