|
|
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.