Add errno.h
[oweals/busybox.git] / utility.c
index 9f524c3e2a505a52c5be3e74a066717c69fc5bb8..81542e94f0c912c62d1b59fe072a2fbbd5ef2ff8 100644 (file)
--- a/utility.c
+++ b/utility.c
@@ -137,7 +137,7 @@ extern void perror_msg_and_die(const char *s, ...)
        exit(EXIT_FAILURE);
 }
 
-#if defined BB_INIT || defined BB_MKSWAP || defined BB_MOUNT
+#if defined BB_INIT || defined BB_MKSWAP || defined BB_MOUNT || defined BB_NFSMOUNT
 /* Returns kernel version encoded as major*65536 + minor*256 + patch,
  * so, for example,  to check if the kernel is greater than 2.2.11:
  *     if (get_kernel_revision() <= 2*65536+2*256+11) { <stuff> }
@@ -167,7 +167,7 @@ _syscall1(int, sysinfo, struct sysinfo *, info);
 #if defined BB_MOUNT || defined BB_UMOUNT
 
 #ifndef __NR_umount2
-#define __NR_umount2           52
+static const int __NR_umount2 = 52;
 #endif
 
 /* Include our own version of <sys/mount.h>, since libc5 doesn't
@@ -180,7 +180,7 @@ extern _syscall5(int, mount, const char *, special_file, const char *, dir,
 
 #if defined BB_INSMOD || defined BB_LSMOD
 #ifndef __NR_query_module
-#define __NR_query_module     167
+static const int __NR_query_module = 167;
 #endif
 _syscall5(int, query_module, const char *, name, int, which,
                void *, buf, size_t, bufsize, size_t*, ret);
@@ -289,7 +289,7 @@ int is_directory(const char *fileName, const int followLinks, struct stat *statB
 }
 #endif
 
-#if defined (BB_AR) || defined BB_CP_MV
+#if defined BB_AR || defined BB_CP_MV
 /*
  * Copy chunksize bytes between two file descriptors
  */
@@ -525,7 +525,7 @@ const char *time_string(time_t timeVal)
 }
 #endif /* BB_TAR || BB_AR */
 
-#if defined BB_AR || defined BB_CP_MV || defined BB_DD || defined BB_NC || defined BB_TAR
+#if defined BB_DD || defined BB_NC || defined BB_TAIL || defined BB_TAR || defined BB_AR || defined BB_CP_MV
 /*
  * Write all of the supplied buffer out to a file.
  * This does multiple writes as necessary.
@@ -975,9 +975,9 @@ long my_getpwnamegid(char *name)
 #if (defined BB_CHVT) || (defined BB_DEALLOCVT) || (defined BB_SETKEYCODES)
 
 /* From <linux/kd.h> */ 
-#define KDGKBTYPE       0x4B33  /* get keyboard type */
-#define         KB_84           0x01
-#define         KB_101          0x02    /* this is what we always answer */
+static const int KDGKBTYPE = 0x4B33;  /* get keyboard type */
+static const int KB_84 = 0x01;
+static const int KB_101 = 0x02;    /* this is what we always answer */
 
 int is_a_console(int fd)
 {
@@ -1386,7 +1386,8 @@ extern void *xcalloc(size_t nmemb, size_t size)
 }
 #endif
 
-#if defined BB_FEATURE_NFSMOUNT || defined BB_LS || defined BB_SH || defined BB_WGET
+#if defined BB_NFSMOUNT || defined BB_LS || defined BB_SH || defined BB_WGET || \
+       defined BB_DPKG_DEB || defined BB_TAR
 # ifndef DMALLOC
 extern char * xstrdup (const char *s) {
        char *t;
@@ -1404,7 +1405,7 @@ extern char * xstrdup (const char *s) {
 # endif
 #endif
 
-#if defined BB_FEATURE_NFSMOUNT
+#if defined BB_NFSMOUNT
 extern char * xstrndup (const char *s, int n) {
        char *t;
 
@@ -1666,7 +1667,8 @@ char process_escape_sequence(char **ptr)
 }
 #endif
 
-#if defined BB_BASENAME || defined BB_LN || defined BB_SH || defined BB_INIT || defined BB_FEATURE_USE_PROCFS
+#if defined BB_BASENAME || defined BB_LN || defined BB_SH || defined BB_INIT || \
+       defined BB_FEATURE_USE_PROCFS || defined BB_WGET
 char *get_last_path_component(char *path)
 {
        char *s=path+strlen(path)-1;
@@ -1712,7 +1714,7 @@ FILE *wfopen(const char *path, const char *mode)
 
 #if defined BB_HOSTNAME || defined BB_LOADACM || defined BB_MORE \
  || defined BB_SED || defined BB_SH || defined BB_TAR || defined BB_UNIQ \
- || defined BB_WC || defined BB_CMP
+ || defined BB_WC || defined BB_CMP || defined BB_SORT
 FILE *xfopen(const char *path, const char *mode)
 {
        FILE *fp;
@@ -1757,7 +1759,7 @@ unsigned long parse_number(const char *numstr, struct suffix_mult *suffixes)
 }
 #endif
 
-#if defined BB_DD || defined BB_NC
+#if defined BB_DD || defined BB_NC || defined BB_TAIL
 ssize_t safe_read(int fd, void *buf, size_t count)
 {
        ssize_t n;
@@ -1770,6 +1772,27 @@ ssize_t safe_read(int fd, void *buf, size_t count)
 }
 #endif
 
+#ifdef BB_FEATURE_HUMAN_READABLE
+char *format(unsigned long val, unsigned long hr)
+{
+       static char str[10] = "\0";
+
+       if(val == 0)
+               return("0");
+       if(hr)
+               snprintf(str, 9, "%ld", val/hr);
+       else if(val >= GIGABYTE)
+               snprintf(str, 9, "%.1LfG", ((long double)(val)/GIGABYTE));
+       else if(val >= MEGABYTE)
+               snprintf(str, 9, "%.1LfM", ((long double)(val)/MEGABYTE));
+       else if(val >= KILOBYTE)
+               snprintf(str, 9, "%.1Lfk", ((long double)(val)/KILOBYTE));
+       else
+               snprintf(str, 9, "%ld", (val));
+       return(str);
+}
+#endif
+
 /* END CODE */
 /*
 Local Variables: