2021-12-21 19:01:00 +01:00
|
|
|
#include <gint/hardware.h>
|
|
|
|
#include <gint/bfile.h>
|
2021-12-23 01:19:45 +01:00
|
|
|
#include <gint/fs.h>
|
2021-12-21 19:01:00 +01:00
|
|
|
#include <errno.h>
|
2021-12-30 18:17:13 +01:00
|
|
|
#include <sys/stat.h>
|
2021-12-21 19:01:00 +01:00
|
|
|
#include "util.h"
|
|
|
|
|
|
|
|
int fugue_unlink(char const *path)
|
|
|
|
{
|
|
|
|
ENOTSUP_IF_NOT_FUGUE(-1);
|
|
|
|
|
2021-12-23 01:19:45 +01:00
|
|
|
uint16_t *fcpath = fs_path_normalize_fc(path);
|
2021-12-21 19:01:00 +01:00
|
|
|
if(!fcpath) {
|
|
|
|
errno = ENOMEM;
|
|
|
|
return -1;
|
|
|
|
}
|
|
|
|
|
2021-12-30 18:17:13 +01:00
|
|
|
int type, size, rc;
|
|
|
|
rc = BFile_Ext_Stat(fcpath, &type, &size);
|
|
|
|
if(rc < 0) {
|
|
|
|
errno = bfile_error_to_errno(rc);
|
|
|
|
rc = -1;
|
|
|
|
goto end;
|
|
|
|
}
|
|
|
|
if(bfile_type_to_mode_t(type) != S_IFREG) {
|
|
|
|
errno = ENOTDIR;
|
|
|
|
rc = -1;
|
|
|
|
goto end;
|
2021-12-21 19:01:00 +01:00
|
|
|
}
|
|
|
|
|
2021-12-30 18:17:13 +01:00
|
|
|
rc = BFile_Remove(fcpath);
|
|
|
|
if(rc < 0) {
|
|
|
|
errno = bfile_error_to_errno(rc);
|
|
|
|
rc = -1;
|
|
|
|
}
|
|
|
|
else rc = 0;
|
2021-12-21 19:01:00 +01:00
|
|
|
|
2021-12-30 18:17:13 +01:00
|
|
|
end:
|
|
|
|
free(fcpath);
|
|
|
|
return rc;
|
2021-12-21 19:01:00 +01:00
|
|
|
}
|