windows-nt/Source/XPSP1/NT/base/subsys/posix/programs/psxarc/links.c
2020-09-26 16:20:57 +08:00

65 lines
955 B
C

#include <sys/stat.h>
#include <string.h>
#include <stdlib.h>
#include "links.h"
static LIST_ENTRY LinkList;
void
InitLinkList(void)
{
InitializeListHead(&LinkList);
}
PLINKFILE
GetLinkByIno(ino_t ino)
{
PLINKFILE p;
for (p = (void *)LinkList.Flink; p != (void *)&LinkList;
p = (void *)p->links.Flink) {
if (p->ino == ino) {
return p;
}
}
return NULL;
}
PLINKFILE
GetLinkByName(char *pchName)
{
PLINKFILE p;
for (p = (PLINKFILE)LinkList.Flink; p != (PLINKFILE)&LinkList;
p = (void *)p->links.Flink) {
if (0 == strcmp(p->name, pchName)) {
return p;
}
}
return NULL;
}
void
AddLinkList(struct stat *pstat, char *pchName)
{
PLINKFILE pl;
char *pch;
pl = malloc(sizeof(*pl));
if (NULL == pl) {
return;
}
pch = strdup(pchName);
if (NULL == pch) {
free(pl);
return;
}
pl->nlink = pstat->st_nlink;
pl->name = pch;
pl->dev = pstat->st_dev;
pl->ino = pstat->st_ino;
InsertTailList(&LinkList, &pl->links);
}