• source navigation  • diff markup  • identifier search  • freetext search  • 

Sources/opkg-lede/libopkg/pkg_dest.c

  1 /* pkg_dest.c - the opkg package management system
  2 
  3    Carl D. Worth
  4 
  5    Copyright (C) 2001 University of Southern California
  6 
  7    This program is free software; you can redistribute it and/or
  8    modify it under the terms of the GNU General Public License as
  9    published by the Free Software Foundation; either version 2, or (at
 10    your option) any later version.
 11 
 12    This program is distributed in the hope that it will be useful, but
 13    WITHOUT ANY WARRANTY; without even the implied warranty of
 14    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 15    General Public License for more details.
 16 */
 17 
 18 #include <stdio.h>
 19 
 20 #include "pkg_dest.h"
 21 #include "file_util.h"
 22 #include "sprintf_alloc.h"
 23 #include "opkg_conf.h"
 24 #include "opkg_cmd.h"
 25 #include "opkg_defines.h"
 26 #include "libbb/libbb.h"
 27 
 28 int pkg_dest_init(pkg_dest_t * dest, const char *name, const char *root_dir,
 29                   const char *lists_dir)
 30 {
 31         dest->name = xstrdup(name);
 32 
 33         /* Guarantee that dest->root_dir ends with a '/' */
 34         if (root_dir[strlen(root_dir) - 1] == '/') {
 35                 dest->root_dir = xstrdup(root_dir);
 36         } else {
 37                 sprintf_alloc(&dest->root_dir, "%s/", root_dir);
 38         }
 39         file_mkdir_hier(dest->root_dir, 0755);
 40 
 41         sprintf_alloc(&dest->opkg_dir, "%s%s",
 42                       dest->root_dir, OPKG_STATE_DIR_PREFIX);
 43         file_mkdir_hier(dest->opkg_dir, 0755);
 44 
 45         if (lists_dir[0] == '/')
 46                 sprintf_alloc(&dest->lists_dir, "%s", lists_dir);
 47         else
 48                 sprintf_alloc(&dest->lists_dir, "/%s", lists_dir);
 49 
 50         file_mkdir_hier(dest->lists_dir, 0755);
 51 
 52         sprintf_alloc(&dest->info_dir, "%s/%s",
 53                       dest->opkg_dir, OPKG_INFO_DIR_SUFFIX);
 54         file_mkdir_hier(dest->info_dir, 0755);
 55 
 56         sprintf_alloc(&dest->status_file_name, "%s/%s",
 57                       dest->opkg_dir, OPKG_STATUS_FILE_SUFFIX);
 58 
 59         return 0;
 60 }
 61 
 62 void pkg_dest_deinit(pkg_dest_t * dest)
 63 {
 64         free(dest->name);
 65         dest->name = NULL;
 66 
 67         free(dest->root_dir);
 68         dest->root_dir = NULL;
 69 
 70         free(dest->opkg_dir);
 71         dest->opkg_dir = NULL;
 72 
 73         free(dest->lists_dir);
 74         dest->lists_dir = NULL;
 75 
 76         free(dest->info_dir);
 77         dest->info_dir = NULL;
 78 
 79         free(dest->status_file_name);
 80         dest->status_file_name = NULL;
 81 
 82         dest->root_dir = NULL;
 83 }
 84 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt