Ejemplo n.º 1
0
static void
func(void *data, struct slice *slc) {
    // slice_print(slc);
    
    struct slice s;
    slice_copy(&s, slc);
    
    struct slice *ret = data;
    slice_append(ret, &s);
}
Ejemplo n.º 2
0
static void
recur(struct TreeNode *root, int sum, struct slice *slc, void (*func)(void *, struct slice *), void *data) {
    if (root==NULL) return;
    slice_append(slc, &root->val);
    int save = slc->pos;
    if (root->left==NULL && root->right==NULL) {
        if (sum==root->val) {
            func(data, slc);
        } else {
            slc->pos = save;
        }
        return;
    }
    sum -= root->val;
    recur(root->left, sum, slc, func, data);
    slc->pos = save;
    recur(root->right, sum, slc, func, data);
}
Ejemplo n.º 3
0
char*
read_file(char *file) {
  int fd = open(file, O_RDONLY);
  if (fd == 0) {
    return NULL;
  }

  char *ret = NULL;
  int size = 0;
  int cap = 0;
  while(1) {
    char buf[1024];
    int n = read_all(fd, buf, 1024);
    if (n < 0) return NULL;
    ret = slice_append(ret, &size, &cap, buf, n);
    if (n < 1024) break;
  }
  return ret;
}