more cleanup of the buffer creation code
This commit is contained in:
parent
0f8dc7f205
commit
6d90c58f81
|
@ -193,12 +193,9 @@ ENUM(int32_t, View_Setting_ID){
|
|||
ENUM(uint32_t, Buffer_Create_Flag){
|
||||
/* DOC(BufferCreate_Background is not currently implemented.) */
|
||||
BufferCreate_Background = 0x1,
|
||||
/* DOC(When BufferCreate_AlwaysNew is set it indicates the buffer should be
|
||||
cleared to empty even if it's associated file already has content.) */
|
||||
/* DOC(When BufferCreate_AlwaysNew is set it indicates the buffer should be cleared to empty even if it's associated file already has content.) */
|
||||
BufferCreate_AlwaysNew = 0x2,
|
||||
/* DOC(When BufferCreate_NeverNew is set it indicates that the buffer should
|
||||
only be created if it is an existing file or if a buffer with the given name
|
||||
is already open.) */
|
||||
/* DOC(When BufferCreate_NeverNew is set it indicates that the buffer should only be created if it is an existing file or if a buffer with the given name is already open.) */
|
||||
BufferCreate_NeverNew = 0x4,
|
||||
};
|
||||
|
||||
|
|
|
@ -1226,7 +1226,14 @@ DOC(Whenever a buffer is killed an end signal is sent which triggers the end fil
|
|||
}
|
||||
|
||||
API_EXPORT Buffer_Summary
|
||||
Create_Buffer(Application_Links *app, char *filename, int32_t filename_len, Buffer_Create_Flag flags){
|
||||
Create_Buffer(Application_Links *app, char *filename, int32_t filename_len, Buffer_Create_Flag flags)
|
||||
/*
|
||||
DOC_PARAM(filename, The name of the file to associate to the new buffer. If the file is not found, the buffer will be created empty and will not be associated to a file until it is saved.)
|
||||
DOC_PARAM(filename_len, The length of the filename string.)
|
||||
DOC_PARAM(flags, Flags controlling the buffer creation behavior.)
|
||||
DOC()
|
||||
DOC_SEE(Buffer_Create_Flag)
|
||||
*/{
|
||||
PRFL_FUNC_GROUP();
|
||||
|
||||
Command_Data *cmd = (Command_Data*)app->cmd_context;
|
||||
|
@ -1239,14 +1246,12 @@ Create_Buffer(Application_Links *app, char *filename, int32_t filename_len, Buff
|
|||
Buffer_Summary result = {0};
|
||||
|
||||
if (filename_len > 0){
|
||||
String fname = make_string(filename, filename_len);
|
||||
|
||||
Editing_File *file = 0;
|
||||
b32 do_new_file = false;
|
||||
Plat_Handle handle = {0};
|
||||
|
||||
Temp_Memory temp = begin_temp_memory(part);
|
||||
|
||||
// NOTE(allen): Try to get the file by canon name.
|
||||
String fname = make_string(filename, filename_len);
|
||||
Editing_File *file = 0;
|
||||
b32 do_new_file = false;
|
||||
Editing_File_Canon_Name canon = {0};
|
||||
if (get_canon_name(system, &canon, fname)){
|
||||
file = working_set_canon_contains(working_set, canon.name);
|
||||
|
@ -1255,11 +1260,16 @@ Create_Buffer(Application_Links *app, char *filename, int32_t filename_len, Buff
|
|||
do_new_file = true;
|
||||
}
|
||||
|
||||
// NOTE(allen): Try to get the file by buffer name.
|
||||
if (file == 0){
|
||||
file = working_set_name_contains(working_set, fname);
|
||||
}
|
||||
|
||||
// NOTE(allen): If there is still no file, create a new buffer.
|
||||
if (file == 0){
|
||||
Plat_Handle handle = {0};
|
||||
|
||||
// NOTE(allen): Figure out whether this is a new file, or an existing file.
|
||||
if (!do_new_file){
|
||||
if (flags & BufferCreate_AlwaysNew){
|
||||
do_new_file = true;
|
||||
|
@ -1271,7 +1281,17 @@ Create_Buffer(Application_Links *app, char *filename, int32_t filename_len, Buff
|
|||
}
|
||||
}
|
||||
|
||||
if (!do_new_file){
|
||||
if (do_new_file){
|
||||
if (!(flags & BufferCreate_NeverNew)){
|
||||
file = working_set_alloc_always(working_set, general);
|
||||
if (file != 0){
|
||||
buffer_bind_name(general, working_set, file, fname);
|
||||
init_normal_file(system, models, file, 0, 0);
|
||||
fill_buffer_summary(&result, file, cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
Assert(!handle_equal(handle, null_plat_handle));
|
||||
|
||||
i32 size = system->load_size(handle);
|
||||
|
@ -1302,14 +1322,6 @@ Create_Buffer(Application_Links *app, char *filename, int32_t filename_len, Buff
|
|||
general_memory_free(general, buffer);
|
||||
}
|
||||
}
|
||||
else if (!(flags & BufferCreate_NeverNew)){
|
||||
file = working_set_alloc_always(working_set, general);
|
||||
if (file){
|
||||
buffer_bind_name(general, working_set, file, fname);
|
||||
init_normal_file(system, models, file, 0, 0);
|
||||
fill_buffer_summary(&result, file, cmd);
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
fill_buffer_summary(&result, file, cmd);
|
||||
|
|
|
@ -407,10 +407,12 @@ fm_copy_file(char *file, char *newname){
|
|||
static void
|
||||
fm_copy_all(char *source, char *tag, char *folder){
|
||||
if (source){
|
||||
systemf("copy %s\\%s %s\\*", source, tag, folder);
|
||||
fprintf(stdout, "copy %s\\%s to %s\n", source, tag, folder);
|
||||
systemf("copy %s\\%s %s\\* > nul", source, tag, folder);
|
||||
}
|
||||
else{
|
||||
systemf("copy %s %s\\*", tag, folder);
|
||||
fprintf(stdout, "copy %s to %s\n", tag, folder);
|
||||
systemf("copy %s %s\\* > nul", tag, folder);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -545,10 +547,12 @@ fm_copy_file(char *file, char *newname){
|
|||
static void
|
||||
fm_copy_all(char *source, char *tag, char *folder){
|
||||
if (source){
|
||||
systemf("cp -f %s/%s %s", source, tag, folder);
|
||||
fprintf(stdout, "copy %s/%s to %s\n", source, tag, folder);
|
||||
systemf("cp -f %s/%s %s > /dev/null", source, tag, folder);
|
||||
}
|
||||
else{
|
||||
systemf("cp -f %s %s", tag, folder);
|
||||
fprintf(stdout, "copy %s to %s\n", tag, folder);
|
||||
systemf("cp -f %s %s > /dev/null", tag, folder);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue