History

js: add mp.utils.append_file

Also, for consistency with other APIs, mp.utils.{write,append}_file now return true on success (and still throw on any error).

Avi Halachmi (:avih) committed 5 years ago

Commit bc9d5561 parent 03b9f8e3 files · +23 −11Browse files

Showing the changes to player/javascript.c (1 of 3 files). Show all

Unified · Split

player/javascript.c+13−9
@@ -924,27 +924,31 @@ static void script_get_user_path(js_State *J, void *af) · 923 unmodified lines
924924 js_pushstring(J, mp_get_user_path(af, jctx(J)->mpctx->global, path));
925925 }
926926
927−// args: prefixed file name, data (c-str)
928−static void script_write_file(js_State *J, void *af)
927+// args: is_append, prefixed file name, data (c-str)
928+static void script__write_file(js_State *J, void *af)
929929 {
930930 static const char *prefix = "file://";
931− const char *fname = js_tostring(J, 1);
932− const char *data = js_tostring(J, 2);
931+ bool append = js_toboolean(J, 1);
932+ const char *fname = js_tostring(J, 2);
933+ const char *data = js_tostring(J, 3);
934+ const char *opstr = append ? "append" : "write";
935+
933936 if (strstr(fname, prefix) != fname) // simple protection for incorrect use
934937 js_error(J, "File name must be prefixed with '%s'", prefix);
935938 fname += strlen(prefix);
936939 fname = mp_get_user_path(af, jctx(J)->mpctx->global, fname);
937− MP_VERBOSE(jctx(J), "Writing file '%s'\n", fname);
940+ MP_VERBOSE(jctx(J), "%s file '%s'\n", opstr, fname);
938941
939− FILE *f = fopen(fname, "wb");
942+ FILE *f = fopen(fname, append ? "ab" : "wb");
940943 if (!f)
941− js_error(J, "Cannot open file for writing: '%s'", fname);
944+ js_error(J, "Cannot open (%s) file: '%s'", opstr, fname);
942945 add_af_file(af, f);
943946
944947 int len = strlen(data); // limited by terminating null
945948 int wrote = fwrite(data, 1, len, f);
946949 if (len != wrote)
947− js_error(J, "Cannot write to file: '%s'", fname);
950+ js_error(J, "Cannot %s to file: '%s'", opstr, fname);
951+ js_pushboolean(J, 1); // success. doesn't touch last_error
948952 }
949953
950954 // args: env var name
@@ -1179,7 +1183,7 @@ static const struct fn_entry utils_fns[] = { · 228 unmodified lines
11791183 FN_ENTRY(get_env_list, 0),
11801184
11811185 FN_ENTRY(read_file, 2),
1182− AF_ENTRY(write_file, 2),
1186+ AF_ENTRY(_write_file, 3),
11831187 FN_ENTRY(getenv, 1),
11841188 FN_ENTRY(compile_js, 2),
11851189 FN_ENTRY(_gc, 1),

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t