-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcommon.c
More file actions
117 lines (89 loc) · 2.79 KB
/
Copy pathcommon.c
File metadata and controls
117 lines (89 loc) · 2.79 KB
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
104
105
106
107
108
109
110
111
112
113
114
115
116
#include "common.h"
char *PciIDsFile=NULL;
char *PciIDsDirs=NULL;
char *ReadFile(char *RetStr, const char *Dir, const char *File)
{
STREAM *S;
char *Path=NULL;
RetStr=CopyStr(RetStr, "");
Path=MCopyStr(Path, Dir, "/", File, NULL);
S=STREAMOpen(Path, "r");
if (S)
{
RetStr=STREAMReadDocument(RetStr, S);
StripTrailingWhitespace(RetStr);
StripLeadingWhitespace(RetStr);
STREAMClose(S);
}
Destroy(Path);
return(RetStr);
}
int ReadIntegerFile(const char *Dir, const char *File)
{
char *Tempstr=NULL;
int val;
Tempstr=ReadFile(Tempstr, Dir, File);
val=atoi(Tempstr);
Destroy(Tempstr);
return(val);
}
uint64_t ReadUint64File(const char *Dir, const char *File)
{
char *Tempstr=NULL;
uint64_t val;
Tempstr=ReadFile(Tempstr, Dir, File);
val=strtoll(Tempstr, NULL, 10);
Destroy(Tempstr);
return(val);
}
char *LookupDevNode(char *RetStr, const char *Path, const char *SubDir, const char *PostFix)
{
char *Tempstr=NULL;
glob_t Glob;
RetStr=CopyStr(RetStr, "");
Tempstr=MCopyStr(Tempstr, Path, "/", SubDir, "/", PostFix, NULL);
glob(Tempstr, 0, 0, &Glob);
if (Glob.gl_pathc > 0)
{
RetStr=CopyStr(RetStr, GetBasename(Glob.gl_pathv[0]));
StripTrailingWhitespace(RetStr);
globfree(&Glob);
}
Destroy(Tempstr);
return(RetStr);
}
void LookupAnyDevNode(TDevice *dev, const char *Path)
{
char *Tempstr=NULL;
if (! StrValid(dev->DevNode)) dev->DevNode=LookupDevNode(dev->DevNode, Path, "block","*");
if (! StrValid(dev->DevNode)) dev->DevNode=LookupDevNode(dev->DevNode, Path, "net","*");
if (! StrValid(dev->DevNode)) dev->DevNode=LookupDevNode(dev->DevNode, Path, "bluetooth","*");
if (! StrValid(dev->DevNode)) dev->DevNode=LookupDevNode(dev->DevNode, Path, "tty","*");
if (! StrValid(dev->DevNode)) dev->DevNode=LookupDevNode(dev->DevNode, Path, "sound","*");
if (! StrValid(dev->DevNode)) dev->DevNode=LookupDevNode(dev->DevNode, Path, "graphics","*");
if (! StrValid(dev->DevNode)) dev->DevNode=LookupDevNode(dev->DevNode, Path, "hwmon","*");
if (! StrValid(dev->DevNode)) dev->DevNode=LookupDevNode(dev->DevNode, Path, "input", "*/event*");
if (! StrValid(dev->DevNode))
{
Tempstr=MCopyStr(Tempstr, Path, "/*/*/", NULL);
dev->DevNode=LookupDevNode(dev->DevNode, Tempstr, "input", "*/event*");
}
Destroy(Tempstr);
}
void TDeviceDestroy(void *p_Dev)
{
TDevice *Dev;
Dev=(TDevice *) p_Dev;
if (Dev)
{
Destroy(Dev->BusType);
Destroy(Dev->Address);
Destroy(Dev->Serial);
Destroy(Dev->Description);
Destroy(Dev->Vendor);
Destroy(Dev->idClass);
Destroy(Dev->idVendor);
Destroy(Dev->idProduct);
free(Dev);
}
}