Radish alpha
H
rad:z3QDZAW2FAfuLvihrhiyDC9fAD8G9
HardenedBSD Package Manager
Radicle
Git
lua_scripts: convert type to string list
Baptiste Daroussin committed 3 years ago
commit 6d0c1528b2255007d35207b2cab73bdcea7844fd
parent 870f806
6 files changed +24 -42
modified libpkg/lua_scripts.c
@@ -50,7 +50,6 @@ int
pkg_lua_script_run(struct pkg * const pkg, pkg_lua_script type, bool upgrade)
{
	int ret = EPKG_OK;
-
	struct pkg_lua_script *lscript;
	int pstat;
#ifdef PROC_REAP_KILL
	bool do_reap;
@@ -61,7 +60,7 @@ pkg_lua_script_run(struct pkg * const pkg, pkg_lua_script type, bool upgrade)
	int cur_pipe[2];
	char *line = NULL;

-
	if (pkg->lua_scripts[type] == NULL)
+
	if (tll_length(pkg->lua_scripts[type]) == 0)
		return (EPKG_OK);

	if (!pkg_object_bool(pkg_config_get("RUN_SCRIPTS"))) {
@@ -73,7 +72,7 @@ pkg_lua_script_run(struct pkg * const pkg, pkg_lua_script type, bool upgrade)
	do_reap = procctl(P_PID, mypid, PROC_REAP_ACQUIRE, NULL) == 0;
#endif

-
	LL_FOREACH(pkg->lua_scripts[type], lscript) {
+
	tll_foreach(pkg->lua_scripts[type], s) {
		if (get_socketpair(cur_pipe) == -1) {
			pkg_emit_errno("pkg_lua_script_script", "socketpair");
			goto cleanup;
@@ -115,13 +114,13 @@ pkg_lua_script_run(struct pkg * const pkg, pkg_lua_script type, bool upgrade)
			lua_override_ios(L, true);

			/* parse and set arguments of the line is in the comments */
-
			if (STARTS_WITH(lscript->script, "-- args: ")) {
+
			if (STARTS_WITH(s->item, "-- args: ")) {
				char *walk, *begin, *line = NULL;
				int spaces, argc = 0;
				char **args = NULL;

-
				walk = strchr(lscript->script, '\n');
-
				begin = lscript->script + strlen("-- args: ");
+
				walk = strchr(s->item, '\n');
+
				begin = s->item + strlen("-- args: ");
				line = xstrndup(begin, walk - begin);
				spaces = pkg_utils_count_spaces(line);
				args = xmalloc((spaces + 1)* sizeof(char *));
@@ -132,8 +131,8 @@ pkg_lua_script_run(struct pkg * const pkg, pkg_lua_script type, bool upgrade)
				lua_args_table(L, args, argc);
			}

-
			pkg_debug(3, "Scripts: executing lua\n--- BEGIN ---\n%s\nScripts: --- END ---", lscript->script);
-
			if (luaL_dostring(L, lscript->script)) {
+
			pkg_debug(3, "Scripts: executing lua\n--- BEGIN ---\n%s\nScripts: --- END ---", s->item);
+
			if (luaL_dostring(L, s->item)) {
				pkg_emit_error("Failed to execute lua script: %s", lua_tostring(L, -1));
				lua_close(L);
				_exit(1);
@@ -183,16 +182,14 @@ cleanup:
}

ucl_object_t *
-
pkg_lua_script_to_ucl(struct pkg_lua_script *scripts)
+
pkg_lua_script_to_ucl(stringlist_t *scripts)
{
-
	struct pkg_lua_script *script;
	ucl_object_t *array;

	array = ucl_object_typed_new(UCL_ARRAY);
-
	LL_FOREACH(scripts, script) {
-
		ucl_array_append(array, ucl_object_fromstring_common(script->script,
-
				strlen(script->script), UCL_STRING_RAW|UCL_STRING_TRIM));
-
	}
+
	tll_foreach(*scripts, s)
+
		ucl_array_append(array, ucl_object_fromstring_common(s->item,
+
		    strlen(s->item), UCL_STRING_RAW|UCL_STRING_TRIM));

	return (array);
}
@@ -200,7 +197,6 @@ pkg_lua_script_to_ucl(struct pkg_lua_script *scripts)
int
pkg_lua_script_from_ucl(struct pkg *pkg, const ucl_object_t *obj, pkg_lua_script type)
{
-
	struct pkg_lua_script *lscript;
	const ucl_object_t *cur;
	ucl_object_iter_t it = NULL;

@@ -209,9 +205,7 @@ pkg_lua_script_from_ucl(struct pkg *pkg, const ucl_object_t *obj, pkg_lua_script
			pkg_emit_error("lua scripts be strings");
			return (EPKG_FATAL);
		}
-
		lscript = xcalloc(1, sizeof(*lscript));
-
		lscript->script = xstrdup(ucl_object_tostring(cur));
-
		DL_APPEND(pkg->lua_scripts[type], lscript);
+
		tll_push_back(pkg->lua_scripts[type], xstrdup(ucl_object_tostring(cur)));
	}
	return (EPKG_OK);
}
modified libpkg/pkg.c
@@ -88,6 +88,8 @@ pkg_free(struct pkg *pkg)

	for (int i = 0; i < PKG_NUM_SCRIPTS; i++)
		xstring_free(pkg->scripts[i]);
+
	for (int i = 0; i < PKG_NUM_LUA_SCRIPTS; i++)
+
		tll_free_and_free(pkg->lua_scripts[i], free);

	pkg_list_free(pkg, PKG_DEPS);
	pkg_list_free(pkg, PKG_RDEPS);
@@ -672,14 +674,11 @@ int
pkg_add_lua_script(struct pkg *pkg, const char *data, pkg_lua_script type)
{
	assert(pkg != NULL);
-
	struct pkg_lua_script *lua;

	if (type >= PKG_LUA_UNKNOWN)
		return (EPKG_FATAL);

-
	lua = xcalloc(1, sizeof(*lua));
-
	lua->script = xstrdup(data);
-
	DL_APPEND(pkg->lua_scripts[type], lua);
+
	tll_push_back(pkg->lua_scripts[type], xstrdup(data));

	return (EPKG_OK);
}
modified libpkg/pkg_checksum.c
@@ -274,10 +274,9 @@ pkg_checksum_generate(struct pkg *pkg, char *dest, size_t destlen,
			}
		}
		for (int i = 0; i < PKG_NUM_LUA_SCRIPTS; i++) {
-
			if (pkg->lua_scripts[i] != NULL)
+
			tll_foreach(pkg->lua_scripts[i], s)
				pkg_checksum_add_entry("lua_script",
-
				    pkg->lua_scripts[i]->script,
-
				    &entries);
+
				    s->item, &entries);
		}
	}

modified libpkg/pkg_manifest.c
@@ -1251,7 +1251,7 @@ pkg_emit_object(struct pkg *pkg, short flags)
		pkg_debug(4, "Emitting lua scripts");
		map = NULL;
		for (i = 0; i < PKG_NUM_LUA_SCRIPTS; i++) {
-
			if (pkg->lua_scripts[i] == NULL)
+
			if (tll_length(pkg->lua_scripts[i]) == 0)
				continue;
			switch(i) {
			case PKG_LUA_PRE_INSTALL:
@@ -1270,7 +1270,7 @@ pkg_emit_object(struct pkg *pkg, short flags)
			if (map == NULL)
				map = ucl_object_typed_new(UCL_OBJECT);
			ucl_object_insert_key(map,
-
			    pkg_lua_script_to_ucl(pkg->lua_scripts[i]),
+
			    pkg_lua_script_to_ucl(&pkg->lua_scripts[i]),
				    script_types, 0, true);
		}
		if (map)
modified libpkg/pkgdb.c
@@ -2034,17 +2034,13 @@ pkgdb_insert_scripts(struct pkg *pkg, int64_t package_id, sqlite3 *s)
static int
pkgdb_insert_lua_scripts(struct pkg *pkg, int64_t package_id, sqlite3 *s)
{
-
	struct pkg_lua_script	*scripts, *script;
	int64_t			 i;

	for (i = 0; i < PKG_NUM_LUA_SCRIPTS; i++) {
-
		scripts = pkg->lua_scripts[i];
-
		if (scripts == NULL)
-
			continue;
-
		LL_FOREACH(scripts, script) {
-
			if (run_prstmt(LUASCRIPT1, script->script) != SQLITE_DONE
+
		tll_foreach(pkg->lua_scripts[i], script) {
+
			if (run_prstmt(LUASCRIPT1, script->item) != SQLITE_DONE
			    ||
-
			    run_prstmt(LUASCRIPT2, script->script, package_id, i) != SQLITE_DONE) {
+
			    run_prstmt(LUASCRIPT2, script->item, package_id, i) != SQLITE_DONE) {
				ERROR_STMT_SQLITE(s, STMT(LUASCRIPT2));
				return (EPKG_FATAL);
			}
modified libpkg/private/pkg.h
@@ -176,7 +176,6 @@ extern struct pkg_ctx ctx;
struct pkg_repo_it;
struct pkg_repo;
struct pkg_message;
-
struct pkg_lua_script;
typedef tll(struct pkg_message *) messages_t;

struct pkg {
@@ -186,7 +185,7 @@ struct pkg {
	bool		 vital;
	int64_t		 id;
	xstring		*scripts[PKG_NUM_SCRIPTS];
-
	struct pkg_lua_script	*lua_scripts[PKG_NUM_LUA_SCRIPTS];
+
	stringlist_t	 lua_scripts[PKG_NUM_LUA_SCRIPTS];
	char			*name;
	char			*origin;
	char			*version;
@@ -309,11 +308,6 @@ struct pkg_message {
	pkg_message_t		 type;
};

-
struct pkg_lua_script {
-
	char			*script;
-
	struct pkg_lua_script	*next, *prev;
-
};
-

enum pkg_conflict_type {
	PKG_CONFLICT_ALL = 0,
	PKG_CONFLICT_REMOTE_LOCAL,
@@ -650,7 +644,7 @@ int pkg_start_stop_rc_scripts(struct pkg *, pkg_rc_attr attr);

int pkg_script_run(struct pkg *, pkg_script type, bool upgrade);
int pkg_lua_script_run(struct pkg *, pkg_lua_script type, bool upgrade);
-
ucl_object_t *pkg_lua_script_to_ucl(struct pkg_lua_script *);
+
ucl_object_t *pkg_lua_script_to_ucl(stringlist_t *);
int pkg_script_run_child(int pid, int *pstat, int inputfd, const char* script_name);

int pkg_open2(struct pkg **p, struct archive **a, struct archive_entry **ae,