runit/chpst: "change process state" utility
[oweals/busybox.git] / include / libbb.h
index c6a9ae577e312ded033f928909368a7fca68e653..222b4acec2fe2f9435e945ad6f8ff2cbaa7b82dc 100644 (file)
@@ -2,11 +2,10 @@
 /*
  * Busybox main internal header file
  *
- * Licensed under the GPL v2 or later, see the file LICENSE in this tarball.
- *
  * Based in part on code from sash, Copyright (c) 1999 by David I. Bell
  * Permission has been granted to redistribute this code under the GPL.
- *
+ * 
+ * Licensed under the GPL version 2, see the file LICENSE in this tarball.
  */
 #ifndef        __LIBBUSYBOX_H__
 #define        __LIBBUSYBOX_H__    1
@@ -47,6 +46,8 @@
 
 #ifdef CONFIG_LOCALE_SUPPORT
 #include <locale.h>
+#else
+#define setlocale(x,y)
 #endif
 
 #include "pwd_.h"
@@ -118,7 +119,9 @@ enum {
        LOGMODE_SYSLOG = 1<<1,
        LOGMODE_BOTH = LOGMODE_SYSLOG + LOGMODE_STDIO,
 };
+extern const char *msg_eol;
 extern int logmode;
+extern int die_sleep;
 
 extern void bb_show_usage(void) ATTRIBUTE_NORETURN ATTRIBUTE_EXTERNALLY_VISIBLE;
 extern void bb_error_msg(const char *s, ...) __attribute__ ((format (printf, 1, 2)));
@@ -187,7 +190,7 @@ extern FILE *xfopen(const char *path, const char *mode);
 extern int   bb_fclose_nonstdin(FILE *f);
 extern void  bb_fflush_stdout_and_exit(int retval) ATTRIBUTE_NORETURN;
 
-extern void xstat(const char *filename, struct stat *buf);
+extern void xstat(char *filename, struct stat *buf);
 extern int  xsocket(int domain, int type, int protocol);
 extern pid_t spawn(char **argv);
 extern pid_t xspawn(char **argv);
@@ -218,9 +221,6 @@ extern int bb_fprintf(FILE * __restrict stream, const char * __restrict format,
 extern int bb_printf(const char * __restrict format, ...)
        __attribute__ ((format (printf, 1, 2)));
 
-#if ENABLE_NITPICK
-#warning rename to xferror_filename?
-#endif
 extern void xferror(FILE *fp, const char *fn);
 extern void xferror_stdout(void);
 extern void xfflush_stdout(void);
@@ -248,7 +248,9 @@ extern char *safe_strncpy(char *dst, const char *src, size_t size);
 extern int safe_strtoi(char *arg, int* value);
 extern int safe_strtod(char *arg, double* value);
 extern int safe_strtol(char *arg, long* value);
+extern int safe_strtoll(char *arg, long long* value);
 extern int safe_strtoul(char *arg, unsigned long* value);
+extern int safe_strtoull(char *arg, unsigned long long* value);
 
 struct suffix_mult {
        const char *suffix;
@@ -274,9 +276,6 @@ extern long bb_xgetlarg_bnd_sfx(const char *arg, int base,
 extern long bb_xgetlarg10_sfx(const char *arg, const struct suffix_mult *suffixes);
 
 
-#if ENABLE_NITPICK
-#warning pitchable now?
-#endif
 extern unsigned long bb_xparse_number(const char *numstr,
                const struct suffix_mult *suffixes);
 
@@ -301,9 +300,6 @@ extern int set_loop(char **device, const char *file, int offset);
 extern int vdprintf(int d, const char *format, va_list ap);
 #endif
 
-int nfsmount(const char *spec, const char *node, int *flags,
-            char **mount_opts, int running_bg);
-
 /* Include our own copy of struct sysinfo to avoid binary compatibility
  * problems with Linux 2.4, which changed things.  Grumble, grumble. */
 struct sysinfo {
@@ -341,12 +337,9 @@ char *concat_path_file(const char *path, const char *filename);
 char *concat_subpath_file(const char *path, const char *filename);
 char *last_char_is(const char *s, int c);
 
-#if ENABLE_NITPICK
-#warning yuk!
-#endif
 char *fgets_str(FILE *file, const char *terminating_string);
 
-extern int uncompress(int fd_in, int fd_out);
+extern USE_DESKTOP(long long) int uncompress(int fd_in, int fd_out);
 extern int inflate(int in, int out);
 
 extern struct hostent *xgethostbyname(const char *name);
@@ -357,15 +350,15 @@ extern int xconnect(struct sockaddr_in *s_addr);
 extern unsigned short bb_lookup_port(const char *port, const char *protocol, unsigned short default_port);
 extern void bb_lookup_host(struct sockaddr_in *s_in, const char *host);
 
-#if ENABLE_NITPICK
-#warning wrap this?
-#endif
-char *dirname (char *path);
+// This is declared here rather than #including <libgen.h> in order to avoid
+// confusing the two versions of basename.  See the dirname/basename man page
+// for details.
+char *dirname(char *path);
 
-int bb_make_directory (char *path, long mode, int flags);
+int bb_make_directory(char *path, long mode, int flags);
 
-int get_signum(char *name);
-char *get_signame(int number);
+int get_signum(const char *name);
+const char *get_signame(int number);
 
 char *bb_simplify_path(const char *path);
 
@@ -379,30 +372,30 @@ enum {    /* DO NOT CHANGE THESE VALUES!  cp.c depends on them. */
 
 extern const char *bb_applet_name;
 
-extern const char * const bb_msg_full_version;
-extern const char * const bb_msg_memory_exhausted;
-extern const char * const bb_msg_invalid_date;
-extern const char * const bb_msg_io_error;
-extern const char * const bb_msg_read_error;
-extern const char * const bb_msg_write_error;
-extern const char * const bb_msg_name_longer_than_foo;
-extern const char * const bb_msg_unknown;
-extern const char * const bb_msg_can_not_create_raw_socket;
-extern const char * const bb_msg_perm_denied_are_you_root;
-extern const char * const bb_msg_requires_arg;
-extern const char * const bb_msg_invalid_arg;
-extern const char * const bb_msg_standard_input;
-extern const char * const bb_msg_standard_output;
-
-extern const char * const bb_path_nologin_file;
-extern const char * const bb_path_passwd_file;
-extern const char * const bb_path_shadow_file;
-extern const char * const bb_path_gshadow_file;
-extern const char * const bb_path_group_file;
-extern const char * const bb_path_securetty_file;
-extern const char * const bb_path_motd_file;
-extern const char * const bb_path_wtmp_file;
-extern const char * const bb_dev_null;
+extern const char bb_msg_full_version[];
+extern const char bb_msg_memory_exhausted[];
+extern const char bb_msg_invalid_date[];
+extern const char bb_msg_io_error[];
+extern const char bb_msg_read_error[];
+extern const char bb_msg_write_error[];
+extern const char bb_msg_name_longer_than_foo[];
+extern const char bb_msg_unknown[];
+extern const char bb_msg_can_not_create_raw_socket[];
+extern const char bb_msg_perm_denied_are_you_root[];
+extern const char bb_msg_requires_arg[];
+extern const char bb_msg_invalid_arg[];
+extern const char bb_msg_standard_input[];
+extern const char bb_msg_standard_output[];
+
+extern const char bb_path_nologin_file[];
+extern const char bb_path_passwd_file[];
+extern const char bb_path_shadow_file[];
+extern const char bb_path_gshadow_file[];
+extern const char bb_path_group_file[];
+extern const char bb_path_securetty_file[];
+extern const char bb_path_motd_file[];
+extern const char bb_path_wtmp_file[];
+extern const char bb_dev_null[];
 
 #ifndef BUFSIZ
 #define BUFSIZ 4096
@@ -417,14 +410,14 @@ extern char bb_common_bufsiz1[BUFSIZ+1];
  */
 #define LIBBB_DEFAULT_LOGIN_SHELL      "-/bin/sh"
 
-extern const char * const bb_default_login_shell;
+extern const char bb_default_login_shell[];
 /* "/bin/sh" */
 #define DEFAULT_SHELL     (bb_default_login_shell+1)
 /* "sh" */
 #define DEFAULT_SHELL_SHORT_NAME     (bb_default_login_shell+6)
 
 
-extern char bb_path_mtab_file[];
+extern const char bb_path_mtab_file[];
 
 extern int bb_default_error_retval;
 
@@ -449,6 +442,7 @@ extern int bb_default_error_retval;
 #endif
 # define VC_FORMAT "/dev/vc/%d"
 # define LOOP_FORMAT "/dev/loop/%d"
+# define LOOP_NAME "/dev/loop/"
 # define FB_0 "/dev/fb/0"
 #else
 # define CURRENT_VC "/dev/tty0"
@@ -468,13 +462,11 @@ extern int bb_default_error_retval;
 #endif
 # define VC_FORMAT "/dev/tty%d"
 # define LOOP_FORMAT "/dev/loop%d"
+# define LOOP_NAME "/dev/loop"
 # define FB_0 "/dev/fb0"
 #endif
 
 
-#if ENABLE_NITPICK
-#warning put these in .o files
-#endif
 /* The following devices are the same on devfs and non-devfs systems.  */
 #define CURRENT_TTY "/dev/tty"
 #define CONSOLE_DEV "/dev/console"
@@ -488,20 +480,21 @@ void xprint_and_close_file(FILE *file);
 
 #define FAIL_DELAY    3
 extern void bb_do_delay(int seconds);
-extern void change_identity ( const struct passwd *pw );
-extern const char *change_identity_e2str ( const struct passwd *pw );
-extern void run_shell ( const char *shell, int loginshell, const char *command, const char **additional_args);
+extern void change_identity(const struct passwd *pw);
+extern const char *change_identity_e2str(const struct passwd *pw);
+extern void run_shell(const char *shell, int loginshell, const char *command, const char **additional_args);
 #ifdef CONFIG_SELINUX
 extern void renew_current_security_context(void);
 extern void set_current_security_context(security_context_t sid);
 #endif
 extern int run_parts(char **args, const unsigned char test_mode, char **env);
-extern int restricted_shell ( const char *shell );
-extern void setup_environment ( const char *shell, int loginshell, int changeenv, const struct passwd *pw );
-extern int correct_password ( const struct passwd *pw );
+extern int restricted_shell(const char *shell);
+extern void setup_environment(const char *shell, int loginshell, int changeenv, const struct passwd *pw);
+extern int correct_password(const struct passwd *pw);
 extern char *pw_encrypt(const char *clear, const char *salt);
 extern int obscure(const char *old, const char *newval, const struct passwd *pwdp);
 
+extern void xsetenv(const char *key, const char *value);
 extern int xopen(const char *pathname, int flags);
 extern int xopen3(const char *pathname, int flags, int mode);
 extern void xread(int fd, void *buf, size_t count);