]> granicus.if.org Git - strace/commitdiff
file.c: export sprintmode and move it to a separate file
authorDmitry V. Levin <ldv@altlinux.org>
Sat, 6 Dec 2014 03:53:16 +0000 (03:53 +0000)
committerDmitry V. Levin <ldv@altlinux.org>
Thu, 11 Dec 2014 21:39:02 +0000 (21:39 +0000)
* printmode.c: New file.
* Makefile.am (strace_SOURCES): Add it.
* defs.h (sprintmode): New prototype.
* file.c (sprintmode): Make global and move to printmode.c.

Makefile.am
defs.h
file.c
printmode.c [new file with mode: 0644]

index f7e477a7ba40187dbd32e6069052e7be46a361a1..bae7d4311758c12c4db2199892edb2443b824a57 100644 (file)
@@ -46,6 +46,7 @@ strace_SOURCES =      \
        or1k_atomic.c   \
        pathtrace.c     \
        personality.c   \
+       printmode.c     \
        process.c       \
        ptp.c           \
        quota.c         \
diff --git a/defs.h b/defs.h
index 708adf61631b99113677b9e7ed433beb9d6c896b..bcdf6253e9b83e26f57e15c5eacf775dc99f6941 100644 (file)
--- a/defs.h
+++ b/defs.h
@@ -672,6 +672,7 @@ extern int printargs_ld(struct tcb *);
 extern void addflags(const struct xlat *, int);
 extern int printflags(const struct xlat *, int, const char *);
 extern const char *sprintflags(const char *, const struct xlat *, int);
+extern const char *sprintmode(int);
 extern void dumpiov_in_msghdr(struct tcb *, long);
 extern void dumpiov_in_mmsghdr(struct tcb *, long);
 extern void dumpiov(struct tcb *, int, long);
diff --git a/file.c b/file.c
index f13f613b59142271dc626daaf7146cfd305aa206..5bcf89405cc042de3f9bc7a82a3c2d3f4913c6f9 100644 (file)
--- a/file.c
+++ b/file.c
@@ -506,33 +506,6 @@ sys_ftruncate64(struct tcb *tcp)
 
 /* several stats */
 
-#include "xlat/modetypes.h"
-
-static const char *
-sprintmode(int mode)
-{
-       static char buf[sizeof("S_IFSOCK|S_ISUID|S_ISGID|S_ISVTX|%o")
-                       + sizeof(int)*3
-                       + /*paranoia:*/ 8];
-       const char *s;
-
-       if ((mode & S_IFMT) == 0)
-               s = "";
-       else if ((s = xlookup(modetypes, mode & S_IFMT)) == NULL) {
-               sprintf(buf, "%#o", mode);
-               return buf;
-       }
-       s = buf + sprintf(buf, "%s%s%s%s", s,
-               (mode & S_ISUID) ? "|S_ISUID" : "",
-               (mode & S_ISGID) ? "|S_ISGID" : "",
-               (mode & S_ISVTX) ? "|S_ISVTX" : "");
-       mode &= ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX);
-       if (mode)
-               sprintf((char*)s, "|%#o", mode);
-       s = (*buf == '|') ? buf + 1 : buf;
-       return *s ? s : "0";
-}
-
 static char *
 sprinttime(time_t t)
 {
diff --git a/printmode.c b/printmode.c
new file mode 100644 (file)
index 0000000..4df1b9f
--- /dev/null
@@ -0,0 +1,30 @@
+#include "defs.h"
+
+#include <fcntl.h>
+
+#include "xlat/modetypes.h"
+
+const char *
+sprintmode(int mode)
+{
+       static char buf[sizeof("S_IFSOCK|S_ISUID|S_ISGID|S_ISVTX|%o")
+                       + sizeof(int)*3
+                       + /*paranoia:*/ 8];
+       const char *s;
+
+       if ((mode & S_IFMT) == 0)
+               s = "";
+       else if ((s = xlookup(modetypes, mode & S_IFMT)) == NULL) {
+               sprintf(buf, "%#o", mode);
+               return buf;
+       }
+       s = buf + sprintf(buf, "%s%s%s%s", s,
+               (mode & S_ISUID) ? "|S_ISUID" : "",
+               (mode & S_ISGID) ? "|S_ISGID" : "",
+               (mode & S_ISVTX) ? "|S_ISVTX" : "");
+       mode &= ~(S_IFMT|S_ISUID|S_ISGID|S_ISVTX);
+       if (mode)
+               sprintf((char*)s, "|%#o", mode);
+       s = (*buf == '|') ? buf + 1 : buf;
+       return *s ? s : "0";
+}