Beispiel #1
0
int movelines ( char *linespec , double_list *p_head, double_list *p_current ) {

  double_list startnode, endnode, tmpnode ;
  int startnumber, endnumber, rc, currentnumber, tmp;

  rc = parse_linespec( linespec, *p_head, *p_current, &startnode, &endnode ) ;

  if( rc )
    return rc ;

  startnumber = double_node_number( startnode ) ;
  endnumber = double_node_number( endnode ) ;
  currentnumber = double_node_number( *p_current ) ;

  if( startnumber > endnumber ) {

    tmp = startnumber ;
    startnumber = endnumber ;
    endnumber = tmp ;
    tmpnode = startnode ;
    startnode = endnode ;
    endnode = tmpnode ;
  }

  if(( currentnumber >= startnumber ) && ( currentnumber <= endnumber ))
    return E_LINES;

  cut_list( p_head, &startnode, &endnode ) ;
  paste_list( &PREV( *p_current ), &startnode ) ;
 
  return 0;
}
Beispiel #2
0
int deletelines ( char *linespec, double_list *p_head, double_list *p_current ) {

  double_list startnode, endnode, tmplist ;
  double_list new_current ;
  int startnumber, endnumber ;
  int rc = parse_linespec( linespec, *p_head, *p_current, &startnode, &endnode ) ;

  if( rc )
    return rc ;

  startnumber = double_node_number( startnode ) ;

  endnumber = double_node_number( endnode ) ;

  if( startnumber > endnumber ) {

    tmplist = startnode ;
    startnode = endnode ;
    endnode = tmplist ;
  }

  new_current = nth_relative_double_node( endnode, 1 ) ;

  if( new_current == NULL )
    new_current = nth_relative_double_node( startnode, -1 ) ;

  cut_list(p_head, &startnode , &endnode ) ;
  *p_current = new_current ;
  destroy_double_list ( &startnode, free ) ;

  return 0 ;
}
t_env	*find_and_cut(t_env *env, char *name)
{
	while (env)
	{
		if (ft_strcmp(env->name, name) == 0)
		{
			env = cut_list(env);
		}
		if (env->next)
			env = env->next;
		else
			break ;
	}
	return (get_start(env));
}
Beispiel #4
0
void event_clear_list(event_list_state_t *list)
{
    if (list != NULL && list->base != NULL)
        cut_list(list->base);
}