Skip to content

Commit

Permalink
Merge pull request #390 from Stargirl-chan/master
Browse files Browse the repository at this point in the history
Fix compilation on musl by implementing a custom basename

Signed-off-by: Joachim Wiberg <[email protected]>
  • Loading branch information
troglobit authored Dec 29, 2023
2 parents 06adeca + cbea83b commit 9130af1
Show file tree
Hide file tree
Showing 7 changed files with 25 additions and 10 deletions.
5 changes: 2 additions & 3 deletions plugins/modprobe.c
Original file line number Diff line number Diff line change
Expand Up @@ -132,11 +132,10 @@ static FILE *maybe_fopen_alias(const char *file, const char *path)
{
const char *basename;

basename = rindex(path, '/');
if (!basename)
basename = basenm(path);
if (!strcmp(basename, path))
return NULL;

basename++;
if (strcmp(file, basename))
return NULL;

Expand Down
2 changes: 1 addition & 1 deletion src/conf.c
Original file line number Diff line number Diff line change
Expand Up @@ -1311,7 +1311,7 @@ int conf_reload(void)
if (strncmp(path, FINIT_SYSPATH_, strlen(FINIT_SYSPATH_)) &&
strncmp(path, FINIT_RUNPATH_, strlen(FINIT_RUNPATH_)))
continue;
if (strcmp(basename(path), basename(gl.gl_pathv[j])))
if (strcmp(basenm(path), basenm(gl.gl_pathv[j])))
continue;
path = NULL; /* replacement later in list, skip this */
break;
Expand Down
3 changes: 2 additions & 1 deletion src/mdadm.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include <string.h>

#include "helpers.h"
#include "util.h"


static glob_t *get_arrays(void)
Expand Down Expand Up @@ -58,7 +59,7 @@ void mdadm_wait(void)
for (i = 0; i < gl->gl_pathc; i++) {
char *array;

array = basename(gl->gl_pathv[i]);
array = basenm(gl->gl_pathv[i]);
snprintf(cmd, sizeof(cmd), "mdadm --wait-clean /dev/%s >/dev/null", array);
run_interactive(cmd, "Marking MD array %s as clean", array);
}
Expand Down
9 changes: 5 additions & 4 deletions src/plugin.c
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@
#include "private.h"
#include "service.h"
#include "sig.h"
#include "util.h"

#define is_io_plugin(p) ((p)->io.cb && (p)->io.fd > 0)
#define SEARCH_PLUGIN(str) \
Expand Down Expand Up @@ -88,7 +89,7 @@ int plugin_register(plugin_t *plugin)
Dl_info info;

if (dladdr(plugin, &info) && info.dli_fname)
plugin->name = basename(info.dli_fname);
plugin->name = basenm(info.dli_fname);
#endif
if (!plugin->name)
plugin->name = "unknown";
Expand Down Expand Up @@ -253,7 +254,7 @@ void plugin_run_hook(hook_point_t no, void *arg)

PLUGIN_ITERATOR(p, tmp) {
if (p->hook[no].cb) {
dbg("Calling %s hook n:o %d (arg: %p) ...", basename(p->name), no, arg ?: "NIL");
dbg("Calling %s hook n:o %d (arg: %p) ...", basenm(p->name), no, arg ?: "NIL");
p->hook[no].cb(arg ? arg : p->hook[no].arg);
}
}
Expand Down Expand Up @@ -301,9 +302,9 @@ int plugin_io_init(plugin_t *p)
if (!is_io_plugin(p))
return 0;

dbg("Initializing plugin %s for I/O", basename(p->name));
dbg("Initializing plugin %s for I/O", basenm(p->name));
if (uev_io_init(ctx, &p->watcher, generic_io_cb, p, p->io.fd, p->io.flags)) {
warn("Failed setting up I/O plugin %s", basename(p->name));
warn("Failed setting up I/O plugin %s", basenm(p->name));
return 1;
}

Expand Down
2 changes: 1 addition & 1 deletion src/tmpfiles.c
Original file line number Diff line number Diff line change
Expand Up @@ -492,7 +492,7 @@ void tmpfilesd(void)

/* check for overrides */
for (j = i + 1; j < gl.gl_pathc; j++) {
if (strcmp(basename(fn), basename(gl.gl_pathv[j])))
if (strcmp(basenm(fn), basenm(gl.gl_pathv[j])))
continue;
fn = NULL;
break;
Expand Down
13 changes: 13 additions & 0 deletions src/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,19 @@ char *progname(char *arg0)
return prognm;
}

/* basename(3) replacement that does not modify its argument */
char *basenm(const char *path)
{
char *basename;

basename = rindex(path, '/');
if (!basename)
return (char *) path;

basename++;
return basename;
}

char *str(char *fmt, ...)
{
static char buf[32];
Expand Down
1 change: 1 addition & 0 deletions src/util.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ extern char *prognm;
#endif

char *progname (char *arg0);
char *basenm (const char *path);

char *str (char *fmt, ...) __attribute__ ((format (printf, 1, 2)));
int fnread (char *buf, size_t len, char *fmt, ...) __attribute__ ((format (printf, 3, 4)));
Expand Down

0 comments on commit 9130af1

Please sign in to comment.