Skip to content

Commit

Permalink
Wean scripts/install.c off toys.h so cross compiling less brittle.
Browse files Browse the repository at this point in the history
  • Loading branch information
landley committed Feb 11, 2016
1 parent 187649d commit df07fb7
Show file tree
Hide file tree
Showing 6 changed files with 36 additions and 37 deletions.
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ install_flat:
install:
scripts/install.sh --long --symlink --force

uninstall_flat: generated/instlist
uninstall_flat:
scripts/install.sh --uninstall

uninstall:
Expand Down
1 change: 0 additions & 1 deletion configure
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,3 @@ CFLAGS="$CFLAGS -funsigned-char"
# If HOSTCC needs CFLAGS or LDFLAGS, just add them to the variable
# ala HOSTCC="blah-cc --static"
[ -z "$HOSTCC" ] && HOSTCC=cc
HOSTCC="$HOSTCC -DBUILD_FOR_HOST"
4 changes: 0 additions & 4 deletions lib/lsm.h
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
* Copyright 2015 Rob Landley <[email protected]>
*/

#ifndef BUILD_FOR_HOST

#if CFG_TOYBOX_SELINUX
#include <selinux/selinux.h>
#else
Expand Down Expand Up @@ -115,5 +113,3 @@ static inline int lsm_fget_context(int file, char **context)
return smack_new_label_from_file(file, XATTR_NAME_SMACK, context);
return fgetfilecon(file, context);
}

#endif // BUILD_FOR_HOST
27 changes: 27 additions & 0 deletions lib/toyflags.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
/* Flags values for the third argument of NEWTOY()
*
* Included from both main.c (runs in toys.h context) and scripts/install.c
* (which may build on crazy things like macosx when cross compiling).
*/

// Flags describing command behavior.

#define TOYFLAG_USR (1<<0)
#define TOYFLAG_BIN (1<<1)
#define TOYFLAG_SBIN (1<<2)
#define TOYMASK_LOCATION ((1<<4)-1)

// This is a shell built-in function, running in the same process context.
#define TOYFLAG_NOFORK (1<<4)

// Start command with a umask of 0 (saves old umask in this.old_umask)
#define TOYFLAG_UMASK (1<<5)

// This command runs as root.
#define TOYFLAG_STAYROOT (1<<6)
#define TOYFLAG_NEEDROOT (1<<7)
#define TOYFLAG_ROOTONLY (TOYFLAG_STAYROOT|TOYFLAG_NEEDROOT)

// Call setlocale to listen to environment variables.
// This invalidates sprintf("%.*s", size, string) as a valid length constraint.
#define TOYFLAG_LOCALE (1<<8)
16 changes: 7 additions & 9 deletions scripts/install.c
Original file line number Diff line number Diff line change
Expand Up @@ -3,28 +3,26 @@
* Copyright 2006 Rob Landley <[email protected]>
*/

#include "toys.h"
#include <stdio.h>
#include "generated/config.h"
#include "lib/toyflags.h"

#undef NEWTOY
#undef OLDTOY
#define NEWTOY(name, opts, flags) {#name, 0, 0, flags},
#define OLDTOY(name, oldname, flags) {#name, 0, 0, flags},
#define NEWTOY(name, opts, flags) {#name, flags},
#define OLDTOY(name, oldname, flags) {#name, flags},

// Populate toy_list[].

struct toy_list toy_list[] = {
struct {char *name; int flags;} toy_list[] = {
#include "generated/newtoys.h"
};

#define TOY_LIST_LEN (sizeof(toy_list)/sizeof(struct toy_list))

int main(int argc, char *argv[])
{
static char *toy_paths[]={"usr/","bin/","sbin/",0};
int i, len = 0;

// Output list of applets.
for (i=1; i<TOY_LIST_LEN; i++) {
for (i=1; i<sizeof(toy_list)/sizeof(*toy_list); i++) {
int fl = toy_list[i].flags;
if (fl & TOYMASK_LOCATION) {
if (argc>1) {
Expand Down
23 changes: 1 addition & 22 deletions toys.h
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@

#include "lib/lib.h"
#include "lib/lsm.h"
#include "lib/toyflags.h"
#include "toys/e2fs.h"

// Get list of function prototypes for all enabled command_main() functions.
Expand All @@ -86,28 +87,6 @@ struct toy_list *toy_find(char *name);
void toy_init(struct toy_list *which, char *argv[]);
void toy_exec(char *argv[]);

// Flags describing command behavior.

#define TOYFLAG_USR (1<<0)
#define TOYFLAG_BIN (1<<1)
#define TOYFLAG_SBIN (1<<2)
#define TOYMASK_LOCATION ((1<<4)-1)

// This is a shell built-in function, running in the same process context.
#define TOYFLAG_NOFORK (1<<4)

// Start command with a umask of 0 (saves old umask in this.old_umask)
#define TOYFLAG_UMASK (1<<5)

// This command runs as root.
#define TOYFLAG_STAYROOT (1<<6)
#define TOYFLAG_NEEDROOT (1<<7)
#define TOYFLAG_ROOTONLY (TOYFLAG_STAYROOT|TOYFLAG_NEEDROOT)

// Call setlocale to listen to environment variables.
// This invalidates sprintf("%.*s", size, string) as a valid length constraint.
#define TOYFLAG_LOCALE (1<<8)

// Array of available commands

extern struct toy_list {
Expand Down

0 comments on commit df07fb7

Please sign in to comment.