libclod
C library for interacting with NBTs, region files, LOD data and other things.
Loading...
Searching...
No Matches
region_file.c
1
#include "region_impl.h"
2
#include "region_file.h"
3
#include "filename.h"
4
#include "error.h"
5
#include <stdlib.h>
6
7
enum
clod_region_result
region_file_open(
const
struct
clod_region
*r,
struct
region_file
**rf_ptr,
const
int64_t *pos,
const
bool
create) {
8
char
filename[REGION_FILENAME_MAX + 1];
9
filename_make(filename, r->opts.
prefix
, r->opts.
region_ext
, pos, r->opts.
dims
);
10
11
file
f;
12
auto
const
res = file_open(&f, r->d, filename, create, &r->opts);
13
if
(res !=
CLOD_REGION_OK
) {
14
return
res;
15
}
16
17
struct
region_file
*rf = malloc(
sizeof
(*rf));
18
if
(!rf) {
19
region_error(
CLOD_REGION_INVALID_USAGE
,
"Failed to allocate memory for region file."
);
20
file_close(f);
21
return
CLOD_REGION_INVALID_USAGE
;
22
}
23
24
rwmutex_init(&rf->mtx);
25
rf->f = f;
26
*rf_ptr = rf;
27
28
return
CLOD_REGION_OK
;
29
}
30
31
enum
clod_region_result
region_file_close(
struct
region_file
*f) {
32
rwmutex_destroy(&f->mtx);
33
auto
const
res = file_close(f->f);
34
free(f);
35
return
res;
36
}
clod_region_result
clod_region_result
Definition
region.h:33
CLOD_REGION_INVALID_USAGE
@ CLOD_REGION_INVALID_USAGE
Definition
region.h:39
CLOD_REGION_OK
@ CLOD_REGION_OK
Definition
region.h:35
clod_region_opts::dims
uint8_t dims
Definition
region.h:160
clod_region_opts::region_ext
char region_ext[10+1]
Definition
region.h:190
clod_region_opts::prefix
char prefix[30+1]
Definition
region.h:186
clod_region
Definition
region_impl.h:12
file
Definition
file.c:13
region_file
Definition
region_file.h:7
src
region
region_file.c
Generated by
1.16.1