Skip to content

Commit 13affd1

Browse files
committed
upgrade string_buffer and use fsio
1 parent 955b4cb commit 13affd1

3 files changed

Lines changed: 24 additions & 57 deletions

File tree

CHANGELOG.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
## CHANGELOG
22

3-
### Unreleased
3+
### v0.1.4
44

5+
* Use fsio for file operations.
6+
* Upgrade string_buffer dependency.
57
* Update cmake build to use shared cmake utilities.
68
* Additional tests.
79

CMakeLists.txt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,28 @@ macro(add_external_lib)
2929
LIBRARY_PARENT_DIRECTORY target
3030
)
3131
endmacro(add_external_lib)
32-
add_external_lib("string_buffer" "v0.1.2")
32+
add_external_lib("string_buffer" "v0.1.3")
33+
add_external_lib("fsio" "v0.1.0")
3334

34-
include_directories(include "${STRING_BUFFER_INCLUDE}")
35+
include_directories(include "${STRING_BUFFER_INCLUDE}" "${FSIO_INCLUDE}")
3536

3637
# define all sources
3738
file(GLOB SOURCES "src/*.c")
3839
file(GLOB HEADER_SOURCES "include/*.h")
3940
file(GLOB TEST_SOURCES "tests/*")
4041
file(GLOB COMMON_TEST_SOURCES "tests/test.*")
42+
file(GLOB EXAMPLE_SOURCES "example/*.c")
4143

4244
# format code
4345
if(DEFINED ENV{X_CMAKE_UNCRUSTIFY_ENABLED})
4446
add_custom_target(uncrustify ALL
4547
uncrustify
4648
-c ${X_CMAKE_PROJECT_ROOT_DIR}/uncrustify.cfg
47-
--no-backup ${SOURCES} ${HEADER_SOURCES} ${TEST_SOURCES})
49+
--no-backup ${SOURCES} ${HEADER_SOURCES} ${TEST_SOURCES} ${EXAMPLE_SOURCES})
4850
endif()
4951

5052
# create static library
51-
add_library(scriptexec STATIC ${SOURCES} ${STRING_BUFFER_SOURCES})
53+
add_library(scriptexec STATIC ${SOURCES} ${STRING_BUFFER_SOURCES} ${FSIO_SOURCES})
5254

5355
if(NOT WIN32)
5456
set_target_properties(scriptexec PROPERTIES COMPILE_FLAGS "${X_CMAKE_C_FLAGS} -Wconversion")

src/scriptexec.c

Lines changed: 15 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
#include "fsio.h"
12
#include "scriptexec.h"
23
#include "string_buffer.h"
34
#include <stddef.h>
@@ -7,9 +8,8 @@
78
#include <unistd.h>
89

910
// private functions
10-
struct ScriptExecResult create_result();
11-
bool write_text_file(char *, const char *);
12-
char *read_and_delete_text_file(char *, struct StringBuffer *);
11+
struct ScriptExecResult _create_result();
12+
char *_read_and_delete_text_file(char *);
1313

1414
struct ScriptExecOptions scriptexec_create_options()
1515
{
@@ -32,7 +32,7 @@ struct ScriptExecResult scriptexec_run(const char *script)
3232

3333
struct ScriptExecResult scriptexec_run_with_options(const char *script, struct ScriptExecOptions options)
3434
{
35-
struct ScriptExecResult result = create_result();
35+
struct ScriptExecResult result = _create_result();
3636

3737
if (script == NULL)
3838
{
@@ -68,10 +68,10 @@ struct ScriptExecResult scriptexec_run_with_options(const char *script, struct S
6868
}
6969

7070
string_buffer_append_string(buffer, (char *)script);
71-
const char *updated_script = string_buffer_to_string(buffer);
71+
char *updated_script = string_buffer_to_string(buffer);
7272

73-
char template[] = "/tmp/scriptexec_XXXXXX";
74-
char *dir_name = mkdtemp(template);
73+
char template[] = "/tmp/scriptexec_XXXXXX";
74+
char *dir_name = mkdtemp(template);
7575

7676
if (dir_name == NULL)
7777
{
@@ -95,7 +95,7 @@ struct ScriptExecResult scriptexec_run_with_options(const char *script, struct S
9595
char *err_file = string_buffer_to_string(buffer);
9696

9797
// write script file
98-
if (!write_text_file(script_file, updated_script))
98+
if (!fsio_write_text_file(script_file, updated_script))
9999
{
100100
rmdir(dir_name);
101101
string_buffer_release(buffer);
@@ -119,71 +119,34 @@ struct ScriptExecResult scriptexec_run_with_options(const char *script, struct S
119119
string_buffer_append_string(buffer, " 1> ");
120120
string_buffer_append_string(buffer, out_file);
121121
const char *command = string_buffer_to_string(buffer);
122+
string_buffer_release(buffer);
122123

123124
result.code = system(command);
124125

125126
// read out/err
126-
result.out = read_and_delete_text_file(out_file, buffer);
127-
result.err = read_and_delete_text_file(err_file, buffer);
127+
result.out = _read_and_delete_text_file(out_file);
128+
result.err = _read_and_delete_text_file(err_file);
128129

129130
// delete files
130131
remove(script_file);
131132
rmdir(dir_name);
132133

133-
string_buffer_release(buffer);
134-
135134
return(result);
136135
} /* scriptexec_run_with_options */
137136

138-
struct ScriptExecResult create_result()
137+
struct ScriptExecResult _create_result()
139138
{
140139
struct ScriptExecResult result = { .code = 0, .out = NULL, .err = NULL };
141140

142141
return(result);
143142
}
144143

145144

146-
bool write_text_file(char *file, const char *text)
145+
char *_read_and_delete_text_file(char *file)
147146
{
148-
FILE *fp = fopen(file, "w");
149-
150-
if (fp == NULL)
151-
{
152-
return(false);
153-
}
154-
155-
if (fputs(text, fp) == EOF)
156-
{
157-
fclose(fp);
158-
remove(file);
159-
160-
return(false);
161-
}
162-
163-
fclose(fp);
164-
165-
return(true);
166-
}
167-
168-
169-
char *read_and_delete_text_file(char *file, struct StringBuffer *buffer)
170-
{
171-
FILE *fp = fopen(file, "r");
172-
173-
if (fp == NULL)
174-
{
175-
return(NULL);
176-
}
177-
178-
int character;
179-
string_buffer_clear(buffer);
180-
while ((character = getc(fp)) != EOF)
181-
{
182-
string_buffer_append(buffer, (char)character);
183-
}
147+
char *text = fsio_read_text_file(file);
184148

185-
fclose(fp);
186149
remove(file);
187150

188-
return(string_buffer_to_string(buffer));
151+
return(text);
189152
}

0 commit comments

Comments
 (0)