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+
9+static int maxname;
10+
11+Pkg *pkgs[] = {
12+ &fontsel,
13+ &libtags,
14+ &xmpp,
15+ &zuke,
16+};
17+
18+static void
19+usage(void)
20+{
21+ print("usage: %s ...\n", argv0);
22+ threadexitsall("usage");
23+}
24+
25+static int
26+pkgcmp(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+
36+static void
37+pkginfo(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+
69+static Pkg *
70+pkgfind(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+
81+void
82+threadmain(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+
101+done:
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