Rev 5737 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
5728 | serge | 1 | #include |
5725 | serge | 2 | #include |
3 | #include |
||
4 | #include |
||
5728 | serge | 5 | #include |
6 | |||
5737 | serge | 7 | #include "getopt.h" |
5728 | serge | 8 | #include "package.h" |
5725 | serge | 9 | #include "http.h" |
10 | |||
5809 | serge | 11 | void process_task(list_t *task); |
12 | |||
5725 | serge | 13 | #define BUFFSIZE (64*1024) |
14 | |||
5737 | serge | 15 | #define OPTION_STD_BASE 150 |
5725 | serge | 16 | |
5737 | serge | 17 | enum option_values |
5726 | serge | 18 | { |
5737 | serge | 19 | OPTION_HELP = OPTION_STD_BASE, |
20 | OPTION_LIST_PACKAGES, |
||
5809 | serge | 21 | OPTION_LIST_INSTALLED, |
22 | OPTION_INSTALL_ALL |
||
5726 | serge | 23 | }; |
5725 | serge | 24 | |
5737 | serge | 25 | static const struct option longopts[] = |
5727 | serge | 26 | { |
5737 | serge | 27 | {"list-packages", no_argument, NULL, OPTION_LIST_PACKAGES}, |
28 | {"list-installed",no_argument, NULL, OPTION_LIST_INSTALLED}, |
||
5809 | serge | 29 | {"install-all",no_argument, NULL, OPTION_INSTALL_ALL}, |
5737 | serge | 30 | {NULL,0,NULL,0} |
5727 | serge | 31 | }; |
32 | |||
5809 | serge | 33 | static void show_usage () |
34 | { |
||
35 | sprintf (conbuf, "Usage: kpm [option...]\n"); |
||
36 | con_write_asciiz(conbuf); |
||
37 | |||
38 | sprintf (conbuf, ("\ |
||
39 | Options:\n\ |
||
40 | --list-packages\n\ |
||
41 | show available packages\n")); |
||
42 | con_write_asciiz(conbuf); |
||
43 | |||
44 | sprintf (conbuf, ("\ |
||
45 | --list-installed\n\ |
||
46 | show available packages\n")); |
||
47 | con_write_asciiz(conbuf); |
||
48 | |||
49 | sprintf (conbuf, ("\ |
||
50 | --install all\n\ |
||
51 | install all packages\n")); |
||
52 | con_write_asciiz(conbuf); |
||
53 | }; |
||
54 | |||
5737 | serge | 55 | int main(int argc, char *argv[]) |
5725 | serge | 56 | { |
5737 | serge | 57 | LIST_HEAD(server_list); |
58 | LIST_HEAD(download_list); |
||
59 | LIST_HEAD(cache_list); |
||
60 | LIST_HEAD(local_list); |
||
61 | LIST_HEAD(task_list); |
||
5725 | serge | 62 | |
63 | int count; |
||
5726 | serge | 64 | char *cache_path; |
5727 | serge | 65 | char *tmp_path; |
5809 | serge | 66 | int act = 1; |
5725 | serge | 67 | |
68 | if(http_init()) |
||
69 | goto err_init; |
||
70 | |||
5737 | serge | 71 | set_cwd("/tmp0/1"); |
72 | |||
5731 | serge | 73 | con_init(80, 25, 80, 250, "Kolibri package manager"); |
74 | |||
5727 | serge | 75 | tmp_path = make_tmp_path("packages.xml"); |
5725 | serge | 76 | |
5727 | serge | 77 | count = http_load_file(tmp_path, make_url("packages.xml")); |
5726 | serge | 78 | |
5725 | serge | 79 | if(count) |
5737 | serge | 80 | build_server_list(&server_list, tmp_path); |
81 | |||
5809 | serge | 82 | while(act) |
5725 | serge | 83 | { |
5737 | serge | 84 | int val; |
85 | int index; |
||
86 | |||
87 | val = getopt_long_only(argc, argv,"",longopts, &index); |
||
88 | |||
89 | switch(val) |
||
90 | { |
||
91 | case OPTION_LIST_PACKAGES: |
||
92 | sprintf(conbuf,"available packages:\n\n"); |
||
93 | con_write_asciiz(conbuf); |
||
94 | print_pkg_list(&server_list); |
||
5809 | serge | 95 | act = 0; |
96 | break; |
||
5737 | serge | 97 | |
98 | case OPTION_LIST_INSTALLED: |
||
99 | sprintf(conbuf,"installed packages:\n\n"); |
||
100 | con_write_asciiz(conbuf); |
||
101 | print_pkg_list(&local_list); |
||
5809 | serge | 102 | act = 0; |
103 | break; |
||
5737 | serge | 104 | |
5809 | serge | 105 | case OPTION_INSTALL_ALL: |
106 | copy_list(&task_list, &server_list); |
||
107 | process_task(&task_list); |
||
108 | act = 0; |
||
109 | break; |
||
110 | |||
5737 | serge | 111 | default: |
5809 | serge | 112 | show_usage(); |
113 | act = 0; |
||
5737 | serge | 114 | } |
115 | }; |
||
116 | |||
5731 | serge | 117 | con_exit(0); |
118 | |||
5725 | serge | 119 | return 0; |
120 | |||
121 | err_init: |
||
122 | printf("HTTP library initialization failed\n"); |
||
123 | return -1; |
||
124 | } |
||
5728 | serge | 125 |