|
|
1.1 root 1: #include <sys/stat.h>
2: #include <string.h>
3: #include <stdlib.h>
4: #include "links.h"
5:
6: static LIST_ENTRY LinkList;
7:
8: void
9: InitLinkList(void)
10: {
11: InitializeListHead(&LinkList);
12: }
13:
14: PLINKFILE
15: GetLinkByIno(ino_t ino)
16: {
17: PLINKFILE p;
18:
19: for (p = (void *)LinkList.Flink; p != (void *)&LinkList;
20: p = (void *)p->links.Flink) {
21: if (p->ino == ino) {
22: return p;
23: }
24: }
25: return NULL;
26: }
27:
28: PLINKFILE
29: GetLinkByName(char *pchName)
30: {
31: PLINKFILE p;
32:
33: for (p = (PLINKFILE)LinkList.Flink; p != (PLINKFILE)&LinkList;
34: p = (void *)p->links.Flink) {
35: if (0 == strcmp(p->name, pchName)) {
36: return p;
37: }
38: }
39: return NULL;
40: }
41:
42: void
43: AddLinkList(struct stat *pstat, char *pchName)
44: {
45: PLINKFILE pl;
46: char *pch;
47:
48: pl = malloc(sizeof(*pl));
49: if (NULL == pl) {
50: return;
51: }
52: pch = strdup(pchName);
53: if (NULL == pch) {
54: free(pl);
55: return;
56: }
57:
58: pl->nlink = pstat->st_nlink;
59: pl->name = pch;
60: pl->dev = pstat->st_dev;
61: pl->ino = pstat->st_ino;
62:
63: InsertTailList(&LinkList, &pl->links);
64: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.