コード例 #1
0
ファイル: usepackage.c プロジェクト: rpavlik/usepackage
void add_package(package_t* package)
{
   variable_t* evar;
   variable_t* vvar;
   list_node* enode;
   list_node* vnode;
   list_node* rnode;
   group_t* group;
   char* name;
   int got_one;
   char* text;
   
   if (package->requires)
   {
      DEBUG(stderr, "(pre-using required packages list)\n");

      for (rnode=list_tail(package->requires) ; rnode ; rnode=previous(rnode))
      {
         name = (char*) get_value(rnode);

         if (group = get_group(name))
            use_group(group);
         else
            use_package(name);
      }
   }

   for (vnode = head(package->variables) ; vnode ; vnode = next(vnode))
   {
      vvar = get_value(vnode);
      got_one = 0;
      for (enode = head(the_environment) ; enode ; enode = next(enode))
      {
         evar = get_value(enode);
         if (!strcmp(vvar->name, evar->name))
         {
            remove_node(the_environment, enode, 0);
            add_to_tail(the_environment, update_var(evar, vvar));
            got_one = 1;
            break;
         }
      }
      if (!got_one)
      {
         enode = get_into_env(vvar);
         evar = get_value(enode);
         set_value(enode, update_var(evar, vvar));
      }
   }
   
   for (vnode = head(package->scripts) ; vnode ; vnode = next(vnode))
   {
      text = ((script_t*) get_value(vnode))->text;
      add_to_tail(the_scripts, (void*) text);
   }   
}
コード例 #2
0
int main() {

    LinkNode *head = NULL;
    add_to_tail(&head, 3);
    add_to_tail(&head, 5);
    add_to_tail(&head, -2);
    add_to_tail(&head, 10);
    print_link(head);
    reverse_print_linklist(head);
    LinkNode *null = NULL;
    reverse_print_linklist(null);
    print_reverse_recursively(head);
    printf("\n");
    return 0;
}
コード例 #3
0
ファイル: usepackage.c プロジェクト: rpavlik/usepackage
linked_list* make_pathlist(char* path_string)
{
   linked_list* list;
   int start,i,end;
   char* path;

   list = new_list();

   if (!path_string)
      return(list);

   start = 0;
   i = 0;
   end = strlen(path_string);

   /* if (!end)
      return(list); */

   while (i <= end)
   {
      if ((path_string[i] == ':') || (path_string[i] == '\0'))
      {
         path = (char*) malloc((i - start) + 1);
         strncpy(path, path_string + start, i - start);
         path[i - start] = '\0';
         add_to_tail(list, path);
         start = i + 1;
      }

      i++;
   }

   return(list);
}
コード例 #4
0
ファイル: usepackage.c プロジェクト: rpavlik/usepackage
list_node* get_into_env(variable_t* var)
{
   variable_t* env_var;

   env_var = new(variable_t);
   env_var->name = var->name;
   env_var->type = var->type;

   switch(var->type)
   {
      case VAR_LIT_SET:
         env_var->literal = NULL;
         break;

      case VAR_PATH_SET:
         env_var->pathlist = NULL;
         break;

      case VAR_PATH_ADD:
         env_var->pathlist = make_pathlist(getenv(var->name));
         break;

      default:
         break;
   }

   return(add_to_tail(the_environment, env_var));
}
コード例 #5
0
ファイル: usepackage.c プロジェクト: jonathanhogg/usepackage
linked_list* merge_paths_appended(linked_list* elist, linked_list* vlist)
{
   list_node* enode;
   list_node* vnode;
   char* vpath;


   if (elist && vlist)
   {
      for (vnode = head(vlist) ; vnode ; vnode = next(vnode))
      {
	 vpath = (char*) get_value(vnode);

	 for (enode = head(elist) ; enode ; enode = next(enode)) {
	    if (!strcmp(vpath, (char*) get_value(enode)))
	    {
	       remove_node(elist, enode, 0);
	       break;
	    }
	 }

	 add_to_tail(elist, get_value(vnode));

      }
   }
   else if (vlist && head(vlist))
   {
      return(vlist);
   }

   return(elist);
}
コード例 #6
0
ファイル: vmpolicy_random.c プロジェクト: arcticmatt/CS24
/* Add the specified page to the end of the linked list.  This is a wrapper
 * for the add_to_tail() function.
 */
void add_page(pagelist_t *list, page_t page) {
    pageinfo_t *pginfo;

    assert(list != NULL);
    assert(find_page(list, page, NULL) == NULL);

    /* Always add the page to the back of the queue. */

    pginfo = malloc(sizeof(pageinfo_t));
    pginfo->page = page;
    pginfo->next = NULL;

    add_to_tail(list, pginfo);
}