mirror of
https://github.com/aaru-dps/fstester.git
synced 2025-12-16 19:24:39 +00:00
Implement extended attributes version in BeOS and Haiku.
This commit is contained in:
@@ -31,7 +31,7 @@ project(
|
||||
DESCRIPTION "Filesystem test creator for BeOS and Haiku"
|
||||
LANGUAGES C)
|
||||
|
||||
set(PLATFORM_SOURCES attr.c deleted.c dirdepth.c filename.c files.c frag.c links.c os.c perms.c perms.h rsrcfork.c sparse.c time.c time.h volume.c volume.h xattr.c)
|
||||
set(PLATFORM_SOURCES attr.c deleted.c dirdepth.c filename.c files.c frag.c links.c os.c perms.c perms.h rsrcfork.c sparse.c time.c time.h volume.c volume.h xattr.c xattr.h)
|
||||
|
||||
set(EXECUTABLE_NAME "fssetter-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}")
|
||||
|
||||
|
||||
@@ -22,9 +22,96 @@ Aaru Data Preservation Suite
|
||||
Copyright (C) 2011-2021 Natalia Portillo
|
||||
*****************************************************************************/
|
||||
|
||||
#include <TypeConstants.h>
|
||||
#include <errno.h>
|
||||
#include <fs_attr.h>
|
||||
#include <stdio.h>
|
||||
#include <stdio_pre.h>
|
||||
#include <sys/stat.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "xattr.h"
|
||||
|
||||
#include "../include/defs.h"
|
||||
#include "../log.h"
|
||||
|
||||
void ExtendedAttributes(const char* path)
|
||||
{
|
||||
// TODO
|
||||
int ret;
|
||||
FILE* file;
|
||||
int rc;
|
||||
int cRc;
|
||||
int attr_fd;
|
||||
|
||||
ret = chdir(path);
|
||||
|
||||
if(ret)
|
||||
{
|
||||
log_write("Error %d changing to specified path.\n", errno);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = mkdir("XATTRS", 0755);
|
||||
|
||||
if(ret)
|
||||
{
|
||||
log_write("Error %d creating working directory.\n", errno);
|
||||
return;
|
||||
}
|
||||
|
||||
ret = chdir("XATTRS");
|
||||
|
||||
if(ret)
|
||||
{
|
||||
log_write("Error %d changing to working directory.\n", errno);
|
||||
return;
|
||||
}
|
||||
|
||||
log_write("Creating files with extended attributes.\n");
|
||||
|
||||
rc = 0;
|
||||
cRc = 0;
|
||||
file = fopen("comment", "w+");
|
||||
if(file == NULL) rc = errno;
|
||||
else
|
||||
{
|
||||
fprintf(file, "This file has an extended attribute called \"comment\" that is 34 bytes long.\n");
|
||||
fclose(file);
|
||||
attr_fd = fs_open_attr("comment", "comment", B_STRING_TYPE, O_RDWR);
|
||||
|
||||
if(attr_fd >= 0)
|
||||
{
|
||||
cRc = fs_write_attr(attr_fd, "comment", B_STRING_TYPE, 0, stringAttribute, 34);
|
||||
|
||||
cRc = cRc < 0 ? errno : 0;
|
||||
|
||||
fs_close_attr(attr_fd);
|
||||
}
|
||||
else
|
||||
rc = errno;
|
||||
}
|
||||
log_write("\tFile with an extended attribute called \"comment\", rc = %d, cRc = %d\n", rc, cRc);
|
||||
|
||||
rc = 0;
|
||||
cRc = 0;
|
||||
file = fopen("icon", "w+");
|
||||
if(file == NULL) rc = errno;
|
||||
else
|
||||
{
|
||||
fprintf(file, "This file has an extended attribute called \"comment\" that is 34 bytes long.\n");
|
||||
fclose(file);
|
||||
attr_fd = fs_open_attr("icon", "BEOS:L:STD_ICON", B_LARGE_ICON_TYPE, O_RDWR);
|
||||
|
||||
if(attr_fd >= 0)
|
||||
{
|
||||
cRc = fs_write_attr(attr_fd, "BEOS:L:STD_ICON", B_LARGE_ICON_TYPE, 0, iconAttribute, 1024);
|
||||
|
||||
cRc = cRc < 0 ? errno : 0;
|
||||
|
||||
fs_close_attr(attr_fd);
|
||||
}
|
||||
else
|
||||
rc = errno;
|
||||
}
|
||||
log_write("\tFile with an extended attribute called \"BEOS:L:STD_ICON\", rc = %d, cRc = %d\n", rc, cRc);
|
||||
}
|
||||
|
||||
101
setter/src/beos/xattr.h
Normal file
101
setter/src/beos/xattr.h
Normal file
@@ -0,0 +1,101 @@
|
||||
/****************************************************************************
|
||||
Aaru Data Preservation Suite
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
Author(s) : Natalia Portillo
|
||||
|
||||
--[ License ] ---------------------------------------------------------------
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as
|
||||
published by the Free Software Foundation, either version 3 of the
|
||||
License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
Copyright (C) 2011-2021 Natalia Portillo
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef AARU_FSTESTER_SETTER_SRC_BEOS_XATTR_H_
|
||||
#define AARU_FSTESTER_SETTER_SRC_BEOS_XATTR_H_
|
||||
|
||||
static unsigned char stringAttribute[34] = {
|
||||
0x54, 0x68, 0x69, 0x73, 0x20, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x20, 0x63,
|
||||
0x6F, 0x6E, 0x74, 0x61, 0x69, 0x6E, 0x73, 0x20, 0x61, 0x20, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67,
|
||||
0x2E, 0x00
|
||||
};
|
||||
|
||||
unsigned char iconAttribute[1024] = {
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x1D, 0x17, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x19, 0x13, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x1D, 0x8E, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1D, 0x1A,
|
||||
0x19, 0x18, 0x16, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x1A, 0x1C,
|
||||
0x67, 0x67, 0x67, 0x14, 0x1D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x19, 0x67, 0x19,
|
||||
0x67, 0x8E, 0x8E, 0x8E, 0x13, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1A, 0x67, 0x18, 0x67,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x1D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x18, 0x67, 0x14, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1C, 0x14, 0x13, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x17, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x16, 0x8E, 0x8E, 0x8E, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x17, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1B, 0x8E, 0x8E, 0x94, 0x94, 0x8E,
|
||||
0x8E, 0x8E, 0x8E, 0x8E, 0x8E, 0x17, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x8E, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x8E, 0x8E, 0x94, 0x94, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x12, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x19, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F, 0x14, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
|
||||
0x94, 0x94, 0x94, 0x94, 0x94, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x14, 0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0x94, 0x94, 0x94,
|
||||
0xB5, 0x94, 0x94, 0xB5, 0x94, 0x15, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1E, 0x8E, 0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0x94, 0xB5, 0x94, 0xB5,
|
||||
0x94, 0x94, 0xB5, 0x94, 0xB5, 0x8E, 0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x8E, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0x94, 0xB5, 0x94,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0x94, 0x94, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x67, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0x94, 0x94, 0x1D, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x1F, 0x94, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0x14, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x19, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0x94, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x14, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0x94, 0x94, 0x94, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x8E, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0x94, 0x94, 0x94, 0x12, 0x1E, 0x1E, 0x1E, 0x1E, 0x1F, 0x3F, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x8E, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0x94, 0x94, 0x94, 0x8E, 0x1A, 0x1B, 0x1B, 0x1C, 0x1E, 0x3F, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x8E, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0x94, 0x94, 0x94, 0xB5, 0xB5, 0x16, 0x18, 0x19, 0x1B, 0x1E, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x12, 0xB5, 0x7F, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0xB5, 0xB5, 0x13, 0x16, 0x18, 0x1B, 0x1E, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x19, 0x7F, 0x7F, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0x94, 0x94, 0x94, 0x94, 0xB5, 0xB5, 0x0B, 0x12, 0x14, 0x17, 0x1B, 0x1F, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x1F, 0xB5, 0x7F, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0xB5, 0xB5, 0x0B, 0x11, 0x14, 0x17, 0x1C, 0x3F, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x19, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0x94, 0xB5, 0xB5, 0xB5, 0xB5, 0x0E, 0x11, 0x14, 0x1A, 0x1E, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x16, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0x0B, 0x10, 0x14, 0x19, 0x1D, 0x3F, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x61, 0xAF, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0x0C, 0x12, 0x16, 0x1B, 0x1E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x18, 0x0E, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0xB5,
|
||||
0xB5, 0xB5, 0xB5, 0xB5, 0xB5, 0x12, 0x18, 0x1B, 0x1E, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x1F, 0x1E, 0x1D, 0x19, 0x15, 0x8E, 0x8E, 0x0E,
|
||||
0x10, 0x12, 0x15, 0x19, 0x1B, 0x1D, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
|
||||
};
|
||||
|
||||
#endif // AARU_FSTESTER_SETTER_SRC_BEOS_XATTR_H_
|
||||
Reference in New Issue
Block a user