Example #1
0
void		*malloc(size_t size)
{
  t_mdata	last;
  t_mdata	mem_node;
  size_t	aligned_size;

  last = NULL;
  aligned_size = ROUND4(size);
  if (!g_beg)
    {
      if (!(mem_node = get_more_heap(NULL, aligned_size)))
	return (NULL);
      g_beg = mem_node;
    }
  else
    {
      last = g_beg;
      if (!(mem_node = find_space(&last, aligned_size)))
	{
	  if (!(mem_node = get_more_heap(last, aligned_size)))
	    return (NULL);
	}
      else
	node_resizing(mem_node, aligned_size);
    }
  return (size <= 0 ? NULL : mem_node->d_beg);
}
Example #2
0
char *
iks_stack_strcat (ikstack *s, char *old, size_t old_len, const char *src, size_t src_len)
{
	char *ret;
	ikschunk *c;

	if (!old) {
		return iks_stack_strdup (s, src, src_len);
	}
	if (0 == old_len) old_len = strlen (old);
	if (0 == src_len) src_len = strlen (src);

	for (c = s->data; c; c = c->next) {
		if (c->data + c->last == old) break;
	}
	if (!c) {
		c = find_space (s, s->data, old_len + src_len + 1);
		if (!c) return NULL;
		ret = c->data + c->used;
		c->last = c->used;
		c->used += old_len + src_len + 1;
		memcpy (ret, old, old_len);
		memcpy (ret + old_len, src, src_len);
		ret[old_len + src_len] = '\0';
		return ret;
	}

	if (c->size - c->used > src_len) {
		ret = c->data + c->last;
		memcpy (ret + old_len, src, src_len);
		c->used += src_len;
		ret[old_len + src_len] = '\0';
	} else {
		/* FIXME: decrease c->used before moving string to new place */
		c = find_space (s, s->data, old_len + src_len + 1);
		if (!c) return NULL;
		c->last = c->used;
		ret = c->data + c->used;
		memcpy (ret, old, old_len);
		c->used += old_len;
		memcpy (c->data + c->used, src, src_len);
		c->used += src_len;
		c->data[c->used] = '\0';
		c->used++;
	}
	return ret;
}
Example #3
0
void *
iks_stack_alloc (ikstack *s, size_t size)
{
	ikschunk *c;
	void *mem;

	if (size < MIN_ALLOC_SIZE) size = MIN_ALLOC_SIZE;
	if (size & ALIGN_MASK) size = ALIGN (size);

	c = find_space (s, s->meta, size);
	if (!c) return NULL;
	mem = c->data + c->used;
	c->used += size;
	return mem;
}
Example #4
0
char *
iks_stack_strdup (ikstack *s, const char *src, size_t len)
{
	ikschunk *c;
	char *dest;

	if (!src) return NULL;
	if (0 == len) len = strlen (src);

	c = find_space (s, s->data, len + 1);
	if (!c) return NULL;
	dest = c->data + c->used;
	c->last = c->used;
	c->used += len + 1;
	memcpy (dest, src, len);
	dest[len] = '\0';
	return dest;
}
Example #5
0
const struct dfont_rect * 
dfont_insert(struct dfont *df, int c, int font, int width, int height) {
	if (width > df->width)
		return NULL;
	assert(dfont_lookup(df,c,font) == NULL);
	for (;;) {
		struct font_line *line = find_line(df, width, height);
		if (line == NULL)
			break;
		struct hash_rect * hr = find_space(df, line, width);
		if (hr) {
			return insert_char(df,c,font,hr);
		}
	}
	struct hash_rect * hr = release_space(df, width, height);
	if (hr) {
		return insert_char(df,c,font,hr);
	}
	return NULL;
}
Example #6
0
static bool handle_first_line( p_data_ctx dctx )
{
    char *space, *s = ( char * )dctx->buffer;
    if ( !check_first_line( s ) )
        return false;

    if ( *s == '>' ) s++;
    space = find_space( s );
    if ( space == NULL ) {
        space = s + strlen(s);
    } else {
        *space = 0;
    }
    if ( !dctx->quiet )
        KOutMsg( "SEQ_ID: %s\n", s );
    write_default_str( s, ewrefseq_cn_SEQ_ID, dctx->wr );
    space++;
    if ( !dctx->quiet )
        KOutMsg( "DEF_LINE: %s\n", space );
    write_default_str( space, ewrefseq_cn_DEF_LINE, dctx->wr );
    return true;
}
char * rev_line_rev_alt_word(char *input,int len)
{
	int i=0,j=0,flag=1;
	input=rev_line(input,0,len-1);
	find_non_space(input,&i);
	while(input[i]!=NULL)
	{
		j=i;
		find_space(input,&j);
		if(flag==1)
		{
			flag=0;
		}
		else
		{
			input=rev_line(input,i,j);
			flag=1;
		}
		i=j+1;
		find_non_space(input,&i);
	}
	return input;
}
Example #8
0
void		move_list(t_win *win, t_ios *term, int x, int y)
{
	char	*buf;
	int		select;
	t_wsize	ws;
	int		resize;

	if (tcsetattr(0, TCSADRAIN, term) == -1)
		leave_term();
	buf = ft_memalloc(5);
	win->stop = 0;
	read(0, buf, 3);
	resize = reset_val(term, &ws, 0);
	if (resize != 0)
	{
		y = win->position / win->max_y;
		x = win->position % win->max_y;
		check_move(buf, &y, &x, win);
		select = check_buf(buf, win, win->position, term);
		get_position(win, select, &x, &y);
		print_arg(&(win->arg), win, win->position, find_space(win->arg));
	}
	free(buf);
}
Example #9
0
void parse_kkdcp_string(char *str, int *socktype, char **_port, char **_server, char **_path, char **_realm)
{
	char *path, *server, *port, *realm, *p;

	path = str;
	realm = find_space(path);
	if (realm == NULL) {
		fprintf(stderr, "Cannot parse kkdcp string: %s\n", path);
		exit(1);
	}

	*realm = 0;
	realm++;
	while (c_isspace(*realm))
		realm++;

	server = find_space(realm);
	if (server == NULL) {
		fprintf(stderr, "Cannot parse kkdcp string: %s\n", realm);
		exit(1);
	}

	/* null terminate the realm */
	*server = 0;
	server++;

	while (c_isspace(*server))
		server++;

	if (strncmp(server, "udp@", 4) == 0) {
		*socktype = SOCK_DGRAM;
	} else if (strncmp(server, "tcp@", 4) == 0) {
		*socktype = SOCK_STREAM;
	} else {
		fprintf(stderr, "cannot handle protocol %s\n", server);
			exit(1);
	}
	server += 4;

	p = strchr(server, ']');
	if (p == NULL) { /* IPv4 address or server.name:port */
		port = strchr(server, ':');
	} else { /* [::IPV6address]:PORT */
		port = strchr(p, ':');
		if (port) {
			*p = 0;
			p = strchr(server, '[');
			if (p)
				server = p+1;
		}
	}

	if (port == NULL) {
		fprintf(stderr, "No server port specified in: %s\n", server);
		exit(1);
	}
	*port = 0;
	port++;

	*_port = port;
	*_realm = realm;
	*_path = path;
	*_server = server;

	return;
}