FireBirdLib - Topfield TMS PVR TAP Programming Library
ExtAttribSet.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 ExtAttribSet(char *FileName, char *AttrName, byte *Data, int DataLen)
9{
10 TRACEENTER();
11
12 char FullAttrName[128];
13 char AbsFileName[FBLIB_DIR_SIZE];
14 int f;
15
16 if(!FileName || !*FileName || !AttrName || !*AttrName)
17 {
18 TRACEEXIT();
19 return FALSE;
20 }
21
22 ConvertPathType(FileName, AbsFileName, PF_FullLinuxPath);
23 if(*AbsFileName)
24 {
25 f = open(AbsFileName, O_RDWR, 0600);
26 if(f >= 0)
27 {
28 TAP_SPrint(FullAttrName, "user.%s", AttrName);
29 if(fsetxattr(f, FullAttrName, Data, DataLen, XATTR_CREATE) == 0)
30 {
31 close(f);
32
33 TRACEEXIT();
34 return TRUE;
35 }
36 else
37 {
38 //As the attribute may already exist, retry with the replace flag
39 if(fsetxattr(f, FullAttrName, Data, DataLen, XATTR_REPLACE) == 0)
40 {
41 close(f);
42
43 TRACEEXIT();
44 return TRUE;
45 }
46 }
47 close(f);
48 }
49 }
50
51 TRACEEXIT();
52 return FALSE;
53}
void ConvertPathType(const char *Source, char *Dest, tPathFormat DestFormat)
bool ExtAttribSet(char *FileName, char *AttrName, byte *Data, int DataLen)
Definition: ExtAttribSet.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