mirror of
https://github.com/antirez/gguf-tools.git
synced 2025-09-16 17:48:08 +08:00
gguf_create(): take flags to be able to overwrite files. Fixes #7.
This commit is contained in:
@@ -196,7 +196,7 @@ void gguf_tools_split_mixtral(int *experts_id, const char *mixtral_filename, con
|
||||
exit(1);
|
||||
}
|
||||
|
||||
gguf_ctx *output = gguf_create(output_filename);
|
||||
gguf_ctx *output = gguf_create(output_filename, GGUF_NONE);
|
||||
if (output == NULL) {
|
||||
perror("Opening the output file");
|
||||
exit(1);
|
||||
|
@@ -428,14 +428,14 @@ void gguf_print_value(gguf_ctx *ctx, uint32_t type, union gguf_value *val, int f
|
||||
*
|
||||
* On success the context with the file already loaded is returned,
|
||||
* otherwise NULL is returned. */
|
||||
gguf_ctx *gguf_create(const char *filename) {
|
||||
gguf_ctx *gguf_create(const char *filename, int flags) {
|
||||
struct gguf_header hdr;
|
||||
memcpy(&hdr.magic,"GGUF",4);
|
||||
hdr.version = 3;
|
||||
hdr.tensor_count = 0;
|
||||
hdr.metadata_kv_count = 0;
|
||||
|
||||
FILE *fp = fopen(filename,"wx");
|
||||
FILE *fp = fopen(filename, flags & GGUF_OVERWRITE ? "w" : "wx");
|
||||
if (fp == NULL) return NULL;
|
||||
if (fwrite(&hdr,1,sizeof(hdr),fp) != sizeof(hdr)) {
|
||||
fclose(fp);
|
||||
|
@@ -12,6 +12,10 @@
|
||||
|
||||
/* ============================ Enums and structures ======================== */
|
||||
|
||||
/* Flags that can be used in different functions with the same meaning. */
|
||||
#define GGUF_NONE 0 // No flags.
|
||||
#define GGUF_OVERWRITE (1<<0) // Overwrite the destination object.
|
||||
|
||||
enum gguf_tensor_type {
|
||||
GGUF_TYPE_F32 = 0,
|
||||
GGUF_TYPE_F16 = 1,
|
||||
@@ -160,7 +164,7 @@ typedef struct {
|
||||
/* =============================== Prototypes =============================== */
|
||||
|
||||
gguf_ctx *gguf_init(const char *filename);
|
||||
gguf_ctx *gguf_create(const char *filename);
|
||||
gguf_ctx *gguf_create(const char *filename, int flags);
|
||||
int gguf_remap(gguf_ctx *ctx);
|
||||
void gguf_rewind(gguf_ctx *ctx);
|
||||
void gguf_end(gguf_ctx *ctx);
|
||||
|
Reference in New Issue
Block a user