History

experiment

Sigrid Haflínudóttir committed 6 years ago

Commit 2ddbb0bNo parent (first commit)9 files · +264 −0Browse files

Showing the changes to pkg.c (1 of 9 files). Show all

Unified · Split

pkg.c+103−0
@@ -0,0 +1,103 @@
1#include <u.h>
2#include <libc.h>
3#include <thread.h>
4#include <libsec.h>
5#include "pkg.h"
6
7#define MAX(a,b) ((a)>=(b)?(a):(b))
8
9static int maxname;
10
11Pkg *pkgs[] = {
12 &fontsel,
13 &libtags,
14 &xmpp,
15 &zuke,
16};
17
18static void
19usage(void)
20{
21 print("usage: %s ...\n", argv0);
22 threadexitsall("usage");
23}
24
25static int
26pkgcmp(void *a_, void *b_)
27{
28 Pkg **a, **b;
29
30 a = a_;
31 b = b_;
32 maxname = MAX(maxname, MAX(strlen((*a)->name), strlen((*b)->name)));
33 return strcmp((*a)->name, (*b)->name);
34}
35
36static void
37pkginfo(Pkg *p, int v)
38{
39 int i;
40
41 if(p == nil)
42 return;
43
44 if(v){
45 print("name %s\n", p->name);
46 print("version %s\n", p->ver);
47 print("description %s\n", p->meta.descr);
48 print("web %s\n", p->meta.web);
49 print("license %s\n", p->meta.license);
50 if(p->meta.devs[0] != nil){
51 print("maintainers ");
52 for(i = 0; i < nelem(p->meta.devs) && p->meta.devs[i] != nil; i++)
53 print(" %s", p->meta.devs[i]->nick);
54 print("\n");
55 }
56 if(p->inputs.build[0] != nil || p->inputs.runtime[0] != nil){
57 print("dependencies ");
58 for(i = 0; i < nelem(p->inputs.build) && p->inputs.build[i] != nil; i++)
59 print(" %s", p->inputs.build[i]->name);
60 for(i = 0; i < nelem(p->inputs.build) && p->inputs.runtime[i] != nil; i++)
61 print(" %s", p->inputs.runtime[i]->name);
62 print("\n");
63 }
64 }else{
65 print("%-*s\t%s\n", maxname, p->name, p->meta.descr);
66 }
67}
68
69static Pkg *
70pkgfind(char *name)
71{
72 int i;
73
74 for(i = 0; i < nelem(pkgs); i++)
75 if(strcmp(pkgs[i]->name, name) == 0)
76 return pkgs[i];
77
78 return nil;
79}
80
81void
82threadmain(int argc, char **argv)
83{
84 int i;
85
86 ARGBEGIN{
87 }ARGEND
88
89 qsort(pkgs, nelem(pkgs), sizeof(*pkgs), pkgcmp);
90
91 if(argc < 1){
92 for(i = 0; i < nelem(pkgs); i++)
93 pkginfo(pkgs[i], 0);
94 goto done;
95 }else if(argc == 2 && strcmp(argv[0], "info") == 0){
96 pkginfo(pkgfind(argv[1]), 1);
97 }else{
98 usage();
99 }
100
101done:
102 threadexitsall(nil);
103}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t