source: titan/titan/ipkg.h @ 13877

Last change on this file since 13877 was 13877, checked in by nit, 12 years ago

fix

File size: 18.8 KB
Line 
1#ifndef IPKG_H
2#define IPKG_H
3
4#define IPKG_LIB
5#include "../libipkg/libipkg.h"
6#include "../libipkg/args.h"
7#include "../libipkg/ipkg_cmd.h"
8
9struct ipkg
10{
11        char* name;
12        char* desc;
13        char* version;
14        char* section;
15        char* showname;
16        struct ipkg* prev;
17        struct ipkg* next;
18};
19
20struct ipkg *ipkg = NULL;
21
22void debugipkg()
23{
24        struct ipkg *node = ipkg;
25       
26        while(node != NULL)
27        {
28                if(node->name != NULL)
29                        printf("pkg name: %s\n", node->name);
30                if(node->desc != NULL)
31                        printf("pkg desc: %s\n", node->desc);
32                if(node->version != NULL)
33                        printf("pkg version: %s\n", node->version);
34                if(node->section != NULL)
35                        printf("pkg section: %s\n", node->section);
36                if(node->showname != NULL)
37                        printf("pkg showname: %s\n", node->showname);
38                node = node->next;
39        }
40}
41
42struct ipkg* addipkg(char *name, char* desc, char* version, char* section, char* showname, struct ipkg* last)
43{
44        //debug(1000, "in");
45        struct ipkg *newnode = NULL, *prev = NULL, *node = ipkg;
46
47        newnode = (struct ipkg*)malloc(sizeof(struct ipkg));   
48        if(newnode == NULL)
49        {
50                err("no memory");
51                return NULL;
52        }
53        memset(newnode, 0, sizeof(struct ipkg));
54
55        newnode->name = ostrcat(name, NULL, 0, 0);
56        newnode->desc = ostrcat(desc, NULL, 0, 0);
57        newnode->version = ostrcat(version, NULL, 0, 0);
58        newnode->section = ostrcat(section, NULL, 0, 0);
59        newnode->showname = ostrcat(showname, NULL, 0, 0);
60
61        if(last == NULL)
62        {
63                while(node != NULL)
64                {
65                        prev = node;
66                        node = node->next;
67                }
68        }
69        else
70        {
71                prev = last;
72                node = last->next;
73        }
74
75        if(prev == NULL)
76                ipkg = newnode;
77        else
78        {
79                prev->next = newnode;
80                newnode->prev = prev;
81        }
82        newnode->next = node;
83        if(node != NULL) node->prev = newnode;
84
85        //debug(1000, "out");
86        return newnode;
87}
88
89void delipkg(struct ipkg* ipkgnode)
90{
91        //debug(1000, "in");
92        struct ipkg *node = ipkg, *prev = ipkg;
93
94        while(node != NULL)
95        {
96                if(node == ipkgnode)
97                {
98                        if(node == ipkg)
99                        {
100                                ipkg = node->next;
101                                if(ipkg != NULL)
102                                        ipkg->prev = NULL;
103                        }
104                        else
105                        {
106                                prev->next = node->next;
107                                if(node->next != NULL)
108                                        node->next->prev = prev;
109                        }
110
111                        free(node->name);
112                        node->name = NULL;
113
114                        free(node->desc);
115                        node->desc = NULL;
116
117                        free(node->version);
118                        node->version = NULL;
119
120                        free(node->section);
121                        node->section = NULL;
122
123                        free(node->showname);
124                        node->showname = NULL;
125
126                        free(node);
127                        node = NULL;
128                        break;
129                }
130
131                prev = node;
132                node = node->next;
133        }
134        //debug(1000, "out");
135}
136
137void freeipkg()
138{
139        debug(1000, "in");
140        struct ipkg *node = ipkg, *prev = ipkg;
141
142        while(node != NULL)
143        {
144                prev = node;
145                node = node->next;
146                if(prev != NULL)
147                        delipkg(prev);
148        }
149        debug(1000, "out");
150}
151
152int ipkg_list_cb(char *name, char *desc, char *version, pkg_state_status_t status, void *userdata)
153{
154        int count = 0;
155#ifndef SIMULATE
156        char* tmpstr = NULL;
157        struct splitstr* ret = NULL;
158       
159        tmpstr = ostrcat(name, NULL, 0, 0);
160        ret = strsplit(tmpstr, "-", &count);
161
162        if(count >= 4)
163        {
164                if(desc)
165                        addipkg(name, desc, version, (&ret[2])->part, (&ret[3])->part, NULL);
166                else
167                        addipkg(name, NULL, version, (&ret[2])->part, (&ret[3])->part, NULL);
168        }
169
170        free(ret); ret = NULL;
171        free(tmpstr); tmpstr = NULL;
172#endif
173
174        return 0;
175}
176
177int ipkg_status_cb(char *name, int istatus, char *desc, void *userdata)
178{
179        addipkg(name, desc, NULL, NULL, NULL, NULL);
180        return 0;
181}
182
183int ipkg_update(void)
184{
185        unlink("/var/usr/lib/ipkg/cross");
186        unlink("/var/usr/lib/ipkg/secret");
187        unlink("/var/usr/lib/ipkg/titan");             
188        int err = 0;
189#ifndef SIMULATE
190        args_t args;
191
192        args_init(&args);
193        err = ipkg_lists_update(&args);
194        args_deinit(&args);
195#endif
196        return err;
197}
198
199int ipkg_packages_list_installed(args_t *args, const char *packages, ipkg_list_callback cblist, void *userdata)
200{
201        int err = 0;
202#ifndef SIMULATE
203        ipkg_cmd_t *cmd;
204        ipkg_conf_t ipkg_conf;
205
206        err = ipkg_conf_init (&ipkg_conf, args);
207        if(err)
208        {
209                return err;
210        }
211
212        ipkg_cb_list = cblist;
213        /* we need to do this because of static declarations,
214         * maybe a good idea to change */
215        cmd = ipkg_cmd_find ("list_installed");
216        if(packages)
217                err = ipkg_cmd_exec(cmd, &ipkg_conf, 1, &packages, userdata);
218        else
219                err = ipkg_cmd_exec(cmd, &ipkg_conf, 0, NULL, userdata);
220        ipkg_cb_list = NULL;
221        ipkg_conf_deinit(&ipkg_conf);
222#endif
223        return(err);
224}
225
226int ipkg_list_installed(void)
227{
228        int err = 0;
229#ifndef SIMULATE
230        args_t args;
231       
232        args_init(&args);
233        err = ipkg_packages_list_installed(&args, NULL, ipkg_list_cb, NULL);
234        args_deinit(&args);
235#endif
236        return err;
237}
238
239int ipkg_list(void)
240{
241        int err = 0;
242#ifndef SIMULATE
243        args_t args;
244       
245        args_init(&args);
246        err = ipkg_packages_list(&args, NULL, ipkg_list_cb, NULL);
247        args_deinit(&args);
248#endif
249        return err;
250}
251
252int ipkg_status(const char* package)
253{
254        int err = 0;
255#ifndef SIMULATE
256        args_t args;
257
258        args_init(&args);
259        err = ipkg_packages_status(&args, package, ipkg_status_cb, NULL);
260        args_deinit(&args);
261#endif
262        return err;
263}
264
265int ipkg_info(const char* package)
266{
267        int err = 0;
268#ifndef SIMULATE
269        args_t args;
270
271        args_init(&args);
272        err = ipkg_packages_info(&args, package, ipkg_status_cb, NULL);
273        args_deinit(&args);
274#endif
275        return err;
276}
277
278int ipkg_install(const char* package)
279{
280        debug(130, "package: %s", package);
281
282        int err = 0;
283#ifndef SIMULATE
284        args_t args;
285       
286        args_init(&args);
287        debug(130, "package1: %s", package);
288        err = ipkg_packages_install(&args, package);
289        debug(130, "package2: %s", package);
290        args_deinit(&args);
291        debug(130, "package3: %s", package);
292#endif 
293        return err;
294}
295
296int ipkg_remove(const char* package, int purge)
297{
298        int err = 0;
299#ifndef SIMULATE
300        args_t args;
301
302        args_init(&args);
303        err = ipkg_packages_remove(&args, package, purge);
304        args_deinit(&args);
305#endif
306        return err;
307}
308
309int ipkg_upgrade(void)
310{
311        int err = 0;
312#ifndef SIMULATE
313        args_t args;
314
315        args_init(&args);
316        err = ipkg_packages_upgrade(&args);
317        args_deinit(&args);
318#endif
319        return err;
320}
321
322int ipkg_download(ipkg_conf_t *conf, const char *src, const char *filename)
323{
324        int err = 0, count = 0, i = 0, withoutgui = 0;
325        char* ip = NULL, *pos = NULL, *path = NULL, *tmpstr = NULL;
326        struct splitstr* ret = NULL;
327
328        if(src == NULL) return 1;
329
330        debug(130, "src: %s", src);
331        ip = string_replace("http://", "", (char*)src, 0);
332
333        if(ip != NULL)
334                pos = strchr(ip, '/');
335        if(pos != NULL)
336        {
337                pos[0] = '\0';
338                path = pos + 1;
339        }
340
341        tmpstr = ostrcat("", path, 0, 0);
342        ret = strsplit(tmpstr, "/", &count);
343       
344        for(i = 0; i < count; i++)
345        {
346                if(ostrcmp("Packages.gz", (&ret[i])->part) == 0)
347                        withoutgui = 1;
348        }
349        free(ret); ret = NULL;
350        free(tmpstr); tmpstr = NULL;
351
352        debug(130, "src: %s", src);
353        debug(130, "ip: %s", ip);
354        debug(130, "path: %s", path);
355       
356        if(withoutgui == 1)
357        {
358                if(ostrcmp("97.74.32.10", ip) == 0)
359                {
360                        if(ostrcmp((char*)src, "//97.74.32.10/svn/ipk/sh4/titan") != 0)                 
361                        {
362                                textbox(_("Message"), _("check your Secret Feed !"), _("OK"), getrcconfigint("rcok", NULL), _("EXIT"), getrcconfigint("rcexit", NULL), NULL, 0, NULL, 0, 600, 200, 5, 0);               
363                                free(ip); ip = NULL;
364                                //free(path); //path = NULL;
365                                return 1;
366                        }
367                }
368
369                char* checkfile = NULL;
370                checkfile = ostrcat("/tmp/Packages.", ip, 0, 0);
371
372                if(!file_exist(checkfile)) // +status.ipkg = date + 1day
373                {
374                        char* tmppath = NULL;
375                        tmppath = ostrcat(tmppath, path, 1, 0);
376                        tmppath = string_replace("Packages.gz", "Packages.preview.tar.gz", tmppath, 1);
377                        gethttp(ip, tmppath, 80, "/tmp/Packages.preview.tar.gz", "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0=", NULL);
378                        free(tmppath); tmppath = NULL;
379                       
380                        system("tar -zxvf /tmp/Packages.preview.tar.gz -C /tmp");
381                        unlink("/tmp/Packages.preview.tar.gz");
382                        writesys(checkfile, ".", 1);
383                }
384                free(checkfile); checkfile = NULL;             
385                gethttp(ip, path, 80, (char*)filename, "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0=", NULL);
386        }
387        else
388                err = screendownload("Download", ip, path, 80, (char*)filename, "aXBrLUdaRmg6RkhaVkJHaG56ZnZFaEZERlRHenVpZjU2NzZ6aGpHVFVHQk5Iam0=", 0);
389        free(ip); ip = NULL;
390        //free(path);// path = NULL; segfault
391        return err;
392}
393
394int ipkg_files(const char* package)
395{
396        int err = 0;
397#ifndef SIMULATE
398        args_t args;
399
400        args_init(&args);
401        err = ipkg_package_files(&args, package, ipkg_list_cb, NULL);
402        args_deinit(&args);
403#endif
404        return err;
405}
406
407int ipkg_search(const char* package)
408{
409        int err = 0;
410#ifndef SIMULATE
411        args_t args;
412
413        args_init(&args);
414        err = ipkg_file_search(&args, package, ipkg_list_cb, NULL);
415        args_deinit(&args);
416#endif
417        return err;
418}
419
420char* get_ipk_section()
421{
422        struct ipkg *node = ipkg;
423        char* sectionlist = NULL;
424        char* namelist = NULL;
425        char* tmpstr = NULL;
426        while(node != NULL)
427        {
428                if(node->name != NULL && node->section != NULL)
429                {
430                        tmpstr = ostrcat("-", node->section, 0, 0);
431                        tmpstr = ostrcat(tmpstr, "-", 1, 0);
432                        if(!string_find(tmpstr,namelist))
433                        {
434                                namelist = ostrcat(namelist, node->name, 1, 0);
435                                namelist = ostrcat(namelist, " ", 1, 0);
436                                sectionlist = ostrcat(sectionlist, node->section, 1, 0);
437                                sectionlist = ostrcat(sectionlist, "\n", 1, 0);
438                        }
439                        free(tmpstr), tmpstr = NULL;
440                }
441                node = node->next;
442        }
443        free(namelist), namelist = NULL;
444        return sectionlist;
445}
446
447/* not needed anymore
448char* get_ipk_list(char* section)
449{
450        struct ipkg *node = ipkg;
451        char* namelist = NULL;
452        char* tmpstr = NULL;
453        while(node != NULL)
454        {
455                if(node->name != NULL && node->version != NULL && section != NULL)
456                {
457                        tmpstr = ostrcat("titan-plugin-", section, 0, 0);
458                        tmpstr = ostrcat(tmpstr, "-", 1, 0);
459                        if(string_find(tmpstr,node->name))
460                        {
461                                namelist = ostrcat(namelist, node->name, 1, 0);
462                                namelist = ostrcat(namelist, "\n", 1, 0);
463                        }
464                        free(tmpstr), tmpstr = NULL;
465                }
466                node = node->next;
467        }
468        return namelist;
469}
470*/
471
472char* ipk_listbox(char* defaultstr, char* str, char* skinname, char* skintitle, char* skinpath, int showpng)
473{
474        debug(1000, "in");
475        char* skinname1 = NULL;
476        char* skinpath1 = NULL;
477        char* tmpskinpath = NULL;
478        int rcret = 0;
479
480        if(str == NULL)
481                return 0;
482
483        if(skinname == NULL)
484        {
485                debug(130, "skinname default=menulist");
486                skinname1 = ostrcat(skinname, "menulist", 1, 0);
487        }
488        else
489        {
490                debug(130, "skinname changed=%s", skinname);
491                skinname1 = ostrcat(skinname, "", 0, 0);
492        }
493
494        if(skinpath == NULL)
495        {
496                debug(130, "skinpath default=skin/");
497                skinpath1 = ostrcat(skinpath, "skin/", 1, 0);
498        }
499        else
500        {
501                debug(130, "skinpath changed=%s", skinpath);
502                skinpath1 = ostrcat(skinpath, "", 0, 0);
503        }
504
505        struct skin* screen = getscreen(skinname1);
506        struct skin* listbox = getscreennode(screen, "listbox");
507       
508        listbox->aktpage = -1;
509        listbox->aktline = 1;
510
511        if(skintitle != NULL)
512        {
513                debug(130, "skintitle changed=%s", skintitle);
514                changetitle(screen, _(skintitle));
515        }
516
517        struct skin* tmp = NULL;
518        char* tmpstr = NULL;
519        char* defaultdir = NULL;
520        char* tmpinfo = NULL;
521        char* tmptitle = NULL;
522        char* showname = NULL;
523//      char* tmpstr1 = NULL;
524//      char* tmpck = NULL;
525        char* tmpsplit = NULL;
526        char* tmpck = NULL;
527        char* tmpstr1 = NULL;
528        char* tmpstr4 = NULL;
529        char* tmpstr5 = NULL;
530        if(showpng == 1)
531        {
532                struct splitstr* ret1 = NULL;
533                struct splitstr* ret2 = NULL;
534                struct splitstr* ret3 = NULL;
535                int count = 0;
536                int i = 0;
537                ret1 = strsplit(str, "\n", &count);
538       
539                for( i = 0; i < count; i++)
540                {
541                        int count2 = 0;
542                        tmpsplit = ostrcat(tmpsplit, (&ret1[i])->part, 1, 0);
543                        free(ret2); ret2 = NULL;
544                        ret2 = strsplit(tmpsplit, "-", &count2);
545       
546                        tmp = addlistbox(screen, listbox, tmp, 1);
547                       
548                        if(tmp != NULL)
549                        {
550                                changetext(tmp, _((&ret1[i])->part));
551                                changename(tmp, (&ret1[i])->part);
552       
553                                tmp->del = 1;
554                                tmp->textposx = 120;
555                                tmp->height = 50;
556//                              tmp->fontsize = 30;
557                                tmp->valign = convertxmlentry("middle", 0);
558                                tmp->hspace = 5;
559                                debug(130, "showpng changed=%d", showpng);
560       
561                                if(string_find("%pluginpath%",skinpath1))
562                                {
563                                        struct splitstr* ret6 = NULL;
564                                        int count6 = 0;
565                                        char* tmpstr6 = NULL;
566                                        tmpstr6 = ostrcat("", skinpath1, 0, 0);
567                                        ret6 = strsplit(tmpstr6, "%", &count6);
568                                        defaultdir = ostrcat(getconfig("skinpath", NULL), "/skin/panel_", 0, 0);
569                                        defaultdir = ostrcat(defaultdir, (&ret1[i])->part, 1, 0);
570                                        defaultdir = ostrcat(defaultdir, ".png", 1, 0);
571
572                                        if(!file_exist(defaultdir))
573                                        {
574                                                defaultdir = ostrcat(getconfig("pluginpath", NULL), (&ret6[1])->part, 0, 0);
575                                                defaultdir = ostrcat(defaultdir, "panel_", 0, 0);
576                                                defaultdir = ostrcat(defaultdir, (&ret1[i])->part, 1, 0);
577                                                defaultdir = ostrcat(defaultdir, ".png", 1, 0);
578                                        }
579                                        free(ret6), ret6 = NULL;
580                                }
581                                else
582                                {
583                                        defaultdir = ostrcat(getconfig("skinpath", NULL), skinpath1, 0, 0);
584                                        defaultdir = ostrcat(defaultdir, "/skin/panel_", 0, 0);
585                                        defaultdir = ostrcat(defaultdir, (&ret1[i])->part, 1, 0);
586                                        defaultdir = ostrcat(defaultdir, ".png", 1, 0);
587                                }
588
589                                debug(130, "defaultdir %s", defaultdir);
590                                if(file_exist(defaultdir))
591                                {
592                                        tmpskinpath = ostrcat("", defaultdir, 0, 0);
593                                        changepic(tmp, tmpskinpath);
594                                        free(tmpskinpath); tmpskinpath = NULL;
595                                }
596                                else
597                                {
598                                        tmpskinpath = ostrcat(skinpath1, "panel_default.png", 0, 0);
599                                        changepic(tmp, tmpskinpath);
600                                        free(tmpskinpath); tmpskinpath = NULL;
601                                }
602                                free(defaultdir); defaultdir = NULL;
603       
604                                if(defaultstr != NULL)
605                                        setlistboxselection(listbox, defaultstr);
606                        }
607                        free(ret2),ret2 = NULL;
608                }
609                free(ret1),ret1 = NULL;
610        }
611        else if(showpng == 2)
612        {
613                int i = 0;
614                tmpck = get_ipk_listinstall();
615                struct ipkg *node = ipkg;
616                while(node != NULL)
617                {
618                        debug(130, "name: %s", node->name);
619                        debug(130, "section: %s", node->section);
620                        debug(130, "showname: %s", node->showname);
621                        debug(130, "str: %s", str);
622                                                                       
623                        if(node->section != NULL && ostrcmp(str, node->section) == 0)
624                        {
625                                struct splitstr* ret1 = NULL;
626                                int count1 = 0;                 
627                                tmpstr1 = ostrcat("", node->showname, 0, 0);
628                                ret1 = strsplit(tmpstr1, ".", &count1);
629                                int max = count1;
630                                i += 1;
631                                showname = ostrcat("", (&ret1[0])->part, 0, 0);
632                                free(ret1),ret1 = NULL;
633//                              showname = ostrcat(node->showname, NULL, 0, 0);
634
635                                struct splitstr* ret3 = NULL;
636                                int count3 = 0;
637                                int a = 0;
638                                tmpstr1 = ostrcat("", tmpck, 0, 0);
639       
640                                debug(130, "tmpck: (%d) %s", i, tmpstr1);
641       
642                                ret3 = strsplit(tmpstr1, "\n", &count3);
643                                int skip = 0;
644
645                                debug(130, "check list_installed");
646                                for(a = 0; a < count3; a++)
647                                {
648                                        debug(130, "node->name=%s", node->name);
649                                        debug(130, "(&ret3[a])->part=%s", (&ret3[a])->part);
650
651                                        char* installed = NULL;
652                                        installed = ostrcat(installed, node->section, 1, 0);
653                                        installed = ostrcat(installed, "-", 1, 0);
654                                        installed = ostrcat(installed, node->showname, 1, 0);
655
656                                        if(ostrcmp((&ret3[a])->part, installed) == 0)
657                                        {
658                                                debug(130, "set skiped=1");
659                                                skip = 1;
660                                                break;
661                                        }
662                                        free(installed),installed = NULL;
663                                }
664                                free(ret3),ret3 = NULL;
665                                debug(130, "check list_installed done");                               
666                                if(skip == 0)
667                                {
668                                        tmp = addlistbox(screen, listbox, tmp, 1);
669                                        tmp->del = 1;
670                                        tmp->valign = convertxmlentry("middle", 0);
671                                        tmp->textposx = 250;
672                                        tmp->height = 170;
673                                        tmp->textposx2 = 270;
674                                        tmp->type=TEXTBOX;
675                                        tmp->wrap=YES;
676                                        tmp->hspace = 5;
677                                        debug(130, "showpng changed=%d", showpng);
678       
679                                        defaultdir = ostrcat("", skinpath1, 0, 0);
680                                        defaultdir = ostrcat(defaultdir, "titan-pluginpreview-", 1, 0);
681                                        defaultdir = ostrcat(defaultdir, showname, 1, 0);
682                                        defaultdir = ostrcat(defaultdir, ".png", 1, 0);
683       
684                                        debug(130, "defaultdir %s", defaultdir);
685       
686                                        if(file_exist(defaultdir))
687                                        {
688                                                debug(130, "defaultdir found");
689                                                tmpskinpath = ostrcat(skinpath1, "titan-pluginpreview-", 0, 0);
690                                                tmpskinpath = ostrcat(tmpskinpath, showname, 1, 0);
691                                                tmpskinpath = ostrcat(tmpskinpath, ".png", 1, 0);
692                                                changepic(tmp, tmpskinpath);
693                                                free(tmpskinpath); tmpskinpath = NULL;
694                                        }       
695                                        else
696                                        {
697                                                debug(130, "defaultdir not found use default.png");
698                                                tmpskinpath = ostrcat("", "skin/plugin.png", 0, 0);
699                                                changepic(tmp, tmpskinpath);
700                                                free(tmpskinpath); tmpskinpath = NULL;
701                                        }
702                                        free(defaultdir); defaultdir = NULL;
703       
704                                        if(defaultstr != NULL)
705                                        {
706                                                setlistboxselection(listbox, defaultstr);
707                                        //      if(ostrcmp(defaultstr, (&ret1[i])->part) == 0)
708                                        //              listbox->aktline = i + 1;
709                                        }
710                                        tmptitle = ostrcat(tmptitle, node->showname, 1, 0);
711                                        tmptitle = ostrcat(tmptitle, " v.", 1, 0);
712                                        tmptitle = ostrcat(tmptitle, node->version, 1, 0);
713                                        changetext(tmp, _(tmptitle));
714                                        changename(tmp, tmptitle);
715       
716                                        tmpinfo = ostrcat(tmpinfo, "\nSection: ", 1, 0);
717                                        tmpinfo = ostrcat(tmpinfo, node->section, 1, 0);
718                                        tmpinfo = ostrcat(tmpinfo, "\nDescription:\n", 1, 0);
719                                        if(node->desc != NULL)
720                                                tmpinfo = ostrcat(tmpinfo, node->desc, 1, 0);
721                                        else
722                                                tmpinfo = ostrcat(tmpinfo, _("no description found"), 1, 0);                           
723                                        changetext2(tmp, _(tmpinfo));
724       
725                                        free(tmpinfo); tmpinfo = NULL;
726                                        free(tmptitle); tmptitle = NULL;
727                                        free(tmpstr1);tmpstr1 = NULL;
728                                        free(showname);showname = NULL;
729                                }
730                                free(ret1),ret1 = NULL;
731                        }                       
732                        node = node->next;
733                }
734        }
735        listbox->aktpage = -1;
736        drawscreen(screen,0);
737        addscreenrc(screen, listbox);
738
739        while (1)
740        {
741                rcret = waitrc(screen, 0, 0);
742
743                if(rcret==getrcconfigint("rcexit",NULL)) break;
744                if(listbox->select != NULL && rcret==getrcconfigint("rcok",NULL))
745                {
746                        tmpstr = ostrcat(tmpstr, listbox->select->name, 1, 0);
747                        break;
748                }
749        }
750        free(skinname1); skinname1 = NULL;
751        free(skinpath1); skinpath1 = NULL;
752        delownerrc(screen);
753        delmarkedscreennodes(screen, 1);
754        clearscreen(screen);
755        debug(1000, "out");
756        return tmpstr;
757
758}
759
760char* get_ipk_tmpinstall(char* ipk)
761{
762        debug(130, "in");
763
764        unlink("/var/usr/lib/ipkg/cross");
765        unlink("/var/usr/lib/ipkg/secret");
766        unlink("/var/usr/lib/ipkg/titan");     
767
768        char* cmd = NULL, *tmpstr = NULL;
769        cmd = ostrcat(cmd, "ipkg install /tmp/", 1, 0);
770        cmd = ostrcat(cmd, ipk, 1, 0);
771
772        tmpstr = command(cmd);
773
774        debug(130, "out %s",cmd);
775        free(cmd); cmd = NULL;
776        return tmpstr;
777}
778
779char* get_ipk_listinstall()
780{
781        debug(130, "in");
782        char* cmd = NULL, *tmpstr = NULL;
783
784        cmd = ostrcat(cmd, "ipkg list_installed | awk '{ print $1 }' | sed 's/Successfully//' | sed 's/titan-plugin-//'", 1, 0);
785
786        tmpstr = command(cmd);
787
788        debug(130, "out %s",cmd);
789        free(cmd); cmd = NULL;
790        return tmpstr;
791}
792
793char* get_ipk_tmplistinstall()
794{
795        debug(130, "in");
796        char* cmd = NULL, *tmpstr = NULL;
797
798        cmd = ostrcat(cmd, "ls /tmp | grep '.ipk'", 1, 0);
799
800        tmpstr = command(cmd);
801
802        debug(130, "out %s",cmd);
803        free(cmd); cmd = NULL;
804        return tmpstr;
805}
806
807char* get_ipk_remove(char* ipk)
808{
809        debug(130, "in %s",ipk);
810        char* cmd = NULL, *tmpstr = NULL;
811
812        if(ipk == NULL) return NULL;
813
814        cmd = ostrcat(cmd, "ipkg remove ", 1, 0);
815        cmd = ostrcat(cmd, ipk, 1, 0);
816
817        tmpstr = command(cmd);
818
819        debug(130, "out");
820        free(cmd); cmd = NULL;
821        return tmpstr;
822}
823
824char* get_ipk_info(char* section)
825{
826        debug(130, "in %s",section);
827        char* cmd = NULL, *tmpstr = NULL;
828
829        if(section == NULL) return NULL;
830
831        cmd = ostrcat(cmd, "ipkg list *-", 1, 0);
832        cmd = ostrcat(cmd, section, 1, 0);
833        cmd = ostrcat(cmd, " | cut -d'-' -f6 | sed 's/Successfully terminated.//'", 1, 0);
834
835        tmpstr = command(cmd);
836
837        debug(130, "out %s",cmd);
838        free(cmd); cmd = NULL;
839        return tmpstr;
840}
841
842char* get_ipk_install(char* ipk)
843{
844        debug(130, "in %s",ipk);
845
846        char* cmd = NULL, *tmpstr = NULL;
847        cmd = ostrcat(cmd, "ipkg install ", 1, 0);
848        cmd = ostrcat(cmd, ipk, 1, 0);
849
850        tmpstr = command(cmd);
851
852        debug(130, "out %s",cmd);
853        free(cmd); cmd = NULL;
854        return tmpstr;
855}
856
857#endif
858
Note: See TracBrowser for help on using the repository browser.