FireBirdLib - Topfield TMS PVR TAP Programming Library
ExtAttribGet.c
Go to the documentation of this file.
1#include <string.h>
2#include <unistd.h>
3#include <sys/types.h>
4#include <fcntl.h>
5#include <sys/xattr.h>
6#include "libFireBird.h"
7
8bool ExtAttribGet(char *FileName, char *AttrName, byte *Data, int MaxDataLen, int *DataLen)
9{
10 TRACEENTER();
11
12 char FullAttrName[128];
13 char AbsFileName[FBLIB_DIR_SIZE];
14 int f, i;
15
16 if(!FileName || !*FileName || !AttrName || !*AttrName)
17 {
18 if(DataLen) *DataLen = 0;
19
20 TRACEEXIT();
21 return FALSE;
22 }
23
24 ConvertPathType(FileName, AbsFileName, PF_FullLinuxPath);
25 if(*AbsFileName)
26 {
27 f = open(AbsFileName, O_RDWR, 0600);
28 if(f >= 0)
29 {
30 //Get the size of the data
31 TAP_SPrint(FullAttrName, "user.%s", AttrName);
32 if((i = fgetxattr(f, FullAttrName, NULL, 0)) >= 0)
33 {
34 //Read the data
35 if(i > MaxDataLen) i = MaxDataLen;
36 fgetxattr(f, FullAttrName, Data, i);
37 if(DataLen) *DataLen = i;
38 close(f);
39
40 TRACEEXIT();
41 return TRUE;
42 }
43 close(f);
44 }
45 }
46
47 if(DataLen) *DataLen = 0;
48
49 TRACEEXIT();
50 return FALSE;
51}
void ConvertPathType(const char *Source, char *Dest, tPathFormat DestFormat)
bool ExtAttribGet(char *FileName, char *AttrName, byte *Data, int MaxDataLen, int *DataLen)
Definition: ExtAttribGet.c:8
#define FBLIB_DIR_SIZE
Definition: libFireBird.h:1871
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
@ PF_FullLinuxPath
Definition: libFireBird.h:1926