コード例 #1
0
ファイル: liblisp_text.c プロジェクト: howerj/liblisp
static lisp_cell_t *make_diff_inner(lisp_t * l, diff * d, char *x[], char *y[], size_t i, size_t j, lisp_cell_t * pp, lisp_cell_t * mm)
{ /*lol*/
	if (i > 0 && j > 0 && !strcmp(x[i - 1], y[j - 1])) {
		return cons(l, cons(l, mk_str(l, lisp_strdup(l, x[i - 1])), gsym_nil()), make_diff_inner(l, d, x, y, i - 1, j - 1, pp, mm));
	} else if (j > 0 && (i == 0 || d->c[(i * (d->n)) + (j - 1)] >= d->c[((i - 1) * (d->n)) + j])) {
		return cons(l, cons(l, pp, cons(l, mk_str(l, lisp_strdup(l, y[j - 1])), gsym_nil())), make_diff_inner(l, d, x, y, i, j - 1, pp, mm));
	} else if (i > 0 && (j == 0 || d->c[(i * (d->n)) + (j - 1)] < d->c[((i - 1) * (d->n)) + j])) {
		return cons(l, cons(l, mm, cons(l, mk_str(l, lisp_strdup(l, x[i - 1])), gsym_nil())), make_diff_inner(l, d, x, y, i - 1, j, pp, mm));
	}
	return gsym_nil();
}
コード例 #2
0
ファイル: misc_utils.c プロジェクト: alip2890/Rippix
/*
** put_track_title - Put track artist & title in freedb format into
**                   main_data for specified track number.
** NOTE: A track artist can be specified
*/
void
put_track_title (char *src, _main_data * main_data, int tno)
{
  struct _track *tk_p = &(main_data->track[tno]);
  char *sp = src, *cp, *ep;
  int c;

  /* Strip leading blanks */
  while (isspace (*sp))
    ++sp;

  /* Split off track artist if specified */
  if ((cp = rindex (sp, '/')))
    {
      for (ep = cp - 1; ep > sp && isspace (*ep); --ep)
	;
      c = *(++ep);
      *ep = 0;
      mk_str (&(tk_p->artist), sp);
      *ep = c;
      for (sp = cp + 1; isspace (*sp); ++sp)
	;
    }
  else
    {
      mk_buf (&(tk_p->artist), 0);
    }

  /* Strip trailing spaces */
  for (ep = sp + strlen (sp) - 1; isspace (*ep); --ep)
    ;

  memcpy (tk_p->title, sp, ep - sp + 1);
  tk_p->title[ep - sp + 1] = 0;
}
コード例 #3
0
ファイル: ctest.c プロジェクト: h4x3rotab/plang-lab
int main()
{
    ast* a = mk_int(123);
    ast* b = mk_str("ha");

    ast_list* lst = conslist(2, a, b);

    ast* node = mk_node(body_node, lst);

    print_ast_list(lst);
    print_ast(node);


    return 0;
}
コード例 #4
0
ファイル: drv_ranged_ops.c プロジェクト: sdimitro/libslablist
char *
get_str(int fd)
{
	size_t strsize = get_data(fd);
	while (strsize > STRMAXSZ) {
		strsize = strsize/2;
	}
	// XXX v v v this is for experiment only; remove.
	strsize = STRMAXSZ;
	char *s = mk_str(strsize);
	if (s == NULL) {
		return (NULL);
	}
	int i = 0;
	while (i < (strsize - 1)) {
retry:;
		s[i] = get_data_8b(fd);
		if (s[i] == 0 || s[i] > 126 || s[i] < 33) {
			goto retry;
		}
		i++;
	}
	return (s);
}
コード例 #5
0
/* Create a new string node with position information */
node * mk_pos_str(char *string, unsigned int start, unsigned int stop) {
	node *result = mk_str(string);
	
	return result;
}
コード例 #6
0
ファイル: struct-return.c プロジェクト: ccompile/compilo
int main()
{
	putchar('0' + fct(mk_str(1,2), mk_str(3,4)));
	putchar(10);
	return 0;
}