-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathicons.c
103 lines (96 loc) · 3.93 KB
/
icons.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#include "icons.h"
#include "util.h"
#include <dirent.h>
#include <stdio.h>
#include <string.h>
#include <sys/stat.h>
struct IconMap extmap[] = {
{.name = ".py", .icon = ""}, {.name = ".js", .icon = ""},
{.name = ".c", .icon = ""}, {.name = ".h", .icon = ""},
{.name = ".cpp", .icon = ""}, {.name = ".hpp", .icon = ""},
{.name = ".go", .icon = ""}, {.name = ".rs", .icon = ""},
{.name = ".asm", .icon = ""}, {.name = ".ko", .icon = ""},
{.name = ".s", .icon = ""}, {.name = ".html", .icon = ""},
{.name = ".css", .icon = ""}, {.name = ".java", .icon = ""},
{.name = ".bin", .icon = ""}, {.name = ".elf", .icon = ""},
{.name = ".exe", .icon = ""}, {.name = ".dat", .icon = ""},
{.name = ".php", .icon = ""}, {.name = ".sh", .icon = ""},
{.name = ".bash", .icon = ""}, {.name = ".md", .icon = ""},
{.name = ".json", .icon = ""}, {.name = ".conf", .icon = ""},
{.name = ".toml", .icon = ""}, {.name = ".ini", .icon = ""},
{.name = ".cfg", .icon = ""}, {.name = ".deb", .icon = ""},
{.name = ".tgz", .icon = ""}, {.name = ".gz", .icon = ""},
{.name = ".tar", .icon = ""}, {.name = ".tar.gz", .icon = ""},
{.name = ".tar.xz", .icon = ""}, {.name = ".tar.bz2", .icon = ""},
{.name = ".xz", .icon = ""}, {.name = ".bz2", .icon = ""},
{.name = ".txt", .icon = ""}, {.name = ".png", .icon = ""},
{.name = ".jpg", .icon = ""}, {.name = ".jpeg", .icon = ""},
{.name = ".webp", .icon = ""}, {.name = ".gif", .icon = ""},
{.name = ".webm", .icon = ""}, {.name = ".mp4", .icon = ""},
{.name = ".mkv", .icon = ""}, {.name = ".ogg", .icon = ""},
{.name = ".mp3", .icon = ""}, {.name = ".ovpn", .icon = ""},
{.name = ".pub", .icon = ""}, {.name = ".priv", .icon = ""},
{.name = ".key", .icon = ""}, {.name = ".cert", .icon = ""},
{.name = ".asc", .icon = ""}, {.name = ".sig", .icon = ""},
{.name = ".bat", .icon = ""}, {.name = ".iso", .icon = ""},
{.name = ".qcow2", .icon = ""}, {.name = ".qcow", .icon = ""},
{.name = ".qcow", .icon = ""}, {.name = ".vdi", .icon = ""},
{.name = ".vbox", .icon = ""}, {.name = ".svelte", .icon = ""},
{.name = ".vue", .icon = ""},
};
struct IconMap namemap[] = {
{.name = ".git", .icon = ""},
{.name = ".gitignore", .icon = ""},
{.name = ".gitkeep", .icon = ""},
{.name = "Dockerfile", .icon = ""},
{.name = "Makefile", .icon = ""},
{.name = "go.mod", .icon = ""},
{.name = "go.sum", .icon = ""},
{.name = "package.json", .icon = ""},
{.name = "package-lock.json", .icon = ""},
{.name = "README", .icon = ""},
{.name = "README.md", .icon = ""},
{.name = "README.txt", .icon = ""},
{.name = "LICENSE", .icon = ""},
{.name = "LICENSE.txt", .icon = ""},
{.name = "LICENSE.md", .icon = ""},
{.name = "node_modules", .icon = ""},
{.name = ".prettierrc", .icon = ""},
{.name = ".clang-format", .icon = ""},
};
char *find_icon(char *e, struct stat s) {
for (int i = 0; i < sizeof(namemap) / sizeof(struct IconMap); i++) {
if (eq(e, namemap[i].name)) {
return namemap[i].icon;
}
}
for (int i = 0; i < sizeof(extmap) / sizeof(struct IconMap); i++) {
if (eq(e, ".") || eq(e, "..")) {
return "";
}
if (extmap[i].name[0] == '.' && ends(e, extmap[i].name)) {
return extmap[i].icon;
}
}
switch (s.st_mode & S_IFMT) {
case S_IFDIR:
return "";
break;
case S_IFCHR:
return "";
break;
case S_IFBLK:
return "";
break;
case S_IFLNK:
return "";
break;
case S_IFIFO:
return "";
break;
case S_IFSOCK:
return "";
break;
}
return "";
}