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

Sources/opkg-lede/tests/libopkg_test.c

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <string.h>
  4 #include <libgen.h>
  5 
  6 #include <opkg.h>
  7 
  8 int opkg_state_changed;
  9 pkg_t *find_pkg = NULL;
 10 
 11 #define TEST_PACKAGE "aspell"
 12 
 13 static void progress_callback(const opkg_progress_data_t * progress, void *data)
 14 {
 15         printf("\r%s %3d%%\n", (char *)data, progress->percentage);
 16         fflush(stdout);
 17 }
 18 
 19 static void list_pkg(pkg_t * pkg)
 20 {
 21         char *v = pkg_version_str_alloc(pkg);
 22         printf("%s - %s\n", pkg->name, v);
 23         free(v);
 24 }
 25 
 26 static void package_list_installed_callback(pkg_t * pkg, void *data)
 27 {
 28         if (pkg->state_status == SS_INSTALLED)
 29                 list_pkg(pkg);
 30 }
 31 
 32 static void package_list_callback(pkg_t * pkg, void *data)
 33 {
 34         static int install_count = 0;
 35         static int total_count = 0;
 36 
 37         if (pkg->state_status == SS_INSTALLED)
 38                 install_count++;
 39 
 40         total_count++;
 41 
 42         printf("\rPackage count: %d Installed, %d Total Available",
 43                install_count, total_count);
 44         fflush(stdout);
 45 
 46         if (!find_pkg) {
 47                 /* store the first package to print out later */
 48                 find_pkg = pkg;
 49         }
 50 }
 51 
 52 static void package_list_upgradable_callback(pkg_t * pkg, void *data)
 53 {
 54         list_pkg(pkg);
 55 }
 56 
 57 static void print_package(pkg_t * pkg)
 58 {
 59         char *v = pkg_version_str_alloc(pkg);
 60         const char *tags = pkg_get_string(pkg, PKG_TAGS);
 61 
 62         printf("Name:         %s\n"
 63                "Version:      %s\n"
 64                "Repository:   %s\n"
 65                "Architecture: %s\n"
 66                "Description:  %s\n"
 67                "Tags:         %s\n"
 68                "Size:         %lu\n"
 69                "Status:       %d\n",
 70                pkg->name,
 71                v,
 72                pkg->src->name,
 73                pkg_get_architecture(pkg),
 74                pkg_get_string(pkg, PKG_DESCRIPTION),
 75                tags ? tags : "",
 76                (unsigned long) pkg_get_int(pkg, PKG_SIZE), pkg->state_status);
 77         free(v);
 78 }
 79 
 80 int main(int argc, char **argv)
 81 {
 82         pkg_t *pkg;
 83         int err;
 84 
 85         if (argc < 2) {
 86                 printf("Usage: %s command\n"
 87                        "\nCommands:\n"
 88                        "\tupdate - Update package lists\n"
 89                        "\tfind [package] - Print details of the specified package\n"
 90                        "\tinstall [package] - Install the specified package\n"
 91                        "\tupgrade [package] - Upgrade the specified package\n"
 92                        "\tlist upgrades - List the available upgrades\n"
 93                        "\tlist all - List all available packages\n"
 94                        "\tlist installed - List all the installed packages\n"
 95                        "\tremove [package] - Remove the specified package\n"
 96                        "\trping - Reposiroties ping, check the accessibility of repositories\n"
 97                        "\ttest - Run test script\n", basename(argv[0]));
 98                 exit(0);
 99         }
100 
101         setenv("OFFLINE_ROOT", "/tmp", 0);
102 
103         if (opkg_new()) {
104                 printf("opkg_new() failed. This sucks.\n");
105                 print_error_list();
106                 return 1;
107         }
108 
109         switch (argv[1][0]) {
110         case 'f':
111                 pkg = opkg_find_package(argv[2], NULL, NULL, NULL);
112                 if (pkg) {
113                         print_package(pkg);
114                 } else
115                         printf("Package \"%s\" not found!\n", find_pkg->name);
116                 break;
117         case 'i':
118                 err =
119                     opkg_install_package(argv[2], progress_callback,
120                                          "Installing...");
121                 printf("\nopkg_install_package returned %d\n", err);
122                 break;
123 
124         case 'u':
125                 if (argv[1][2] == 'd') {
126                         err =
127                             opkg_update_package_lists(progress_callback,
128                                                       "Updating...");
129                         printf("\nopkg_update_package_lists returned %d\n",
130                                err);
131                         break;
132                 } else {
133                         if (argc < 3) {
134                                 err =
135                                     opkg_upgrade_all(progress_callback,
136                                                      "Upgrading all...");
137                                 printf("\nopkg_upgrade_all returned %d\n", err);
138                         } else {
139                                 err =
140                                     opkg_upgrade_package(argv[2],
141                                                          progress_callback,
142                                                          "Upgrading...");
143                                 printf("\nopkg_upgrade_package returned %d\n",
144                                        err);
145                         }
146                 }
147                 break;
148 
149         case 'l':
150                 if (argc < 3) {
151                         printf
152                             ("Please specify one either all, installed or upgrades\n");
153                 } else {
154                         switch (argv[2][0]) {
155                         case 'u':
156                                 printf("Listing upgradable packages...\n");
157                                 opkg_list_upgradable_packages
158                                     (package_list_upgradable_callback, NULL);
159                                 break;
160                         case 'a':
161                                 printf("Listing all packages...\n");
162                                 opkg_list_packages(package_list_callback, NULL);
163                                 printf("\n");
164                                 break;
165                         case 'i':
166                                 printf("Listing installed packages...\n");
167                                 opkg_list_packages
168                                     (package_list_installed_callback, NULL);
169                                 break;
170                         default:
171                                 printf("Unknown list option \"%s\"\n", argv[2]);
172                         }
173                 }
174                 break;
175 
176         case 'r':
177                 if (argv[1][1] == 'e') {
178                         err =
179                             opkg_remove_package(argv[2], progress_callback,
180                                                 "Removing...");
181                         printf("\nopkg_remove_package returned %d\n", err);
182                         break;
183                 } else if (argv[1][1] == 'p') {
184                         err = opkg_repository_accessibility_check();
185                         printf
186                             ("\nopkg_repository_accessibility_check returned (%d)\n",
187                              err);
188                         break;
189                 }
190 
191         default:
192                 printf("Unknown command \"%s\"\n", argv[1]);
193         }
194 
195         opkg_free();
196 
197         return 0;
198 }
199 

This page was automatically generated by LXR 0.3.1.  •  OpenWrt