Subversion Repositories Kolibri OS

Rev

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