+#define ADFLAGS2LOGSTRBUFSIZ 128
+const char *adflags2logstr(int adflags)
+{
+ int first = 1;
+ static char buf[ADFLAGS2LOGSTRBUFSIZ];
+
+ buf[0] = 0;
+
+ if (adflags & ADFLAGS_DF) {
+ strlcat(buf, "DF", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_RF) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "RF", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_HF) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "HF", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_NOHF) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "NOHF", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_DIR) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "DIR", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_CHECK_OF) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "OF", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_RDWR) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "O_RDWR", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_RDONLY) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "O_RDONLY", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_CREATE) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "O_CREAT", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_EXCL) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "O_EXCL", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+ if (adflags & ADFLAGS_TRUNC) {
+ if (!first)
+ strlcat(buf, "|", ADFLAGS2LOGSTRBUFSIZ);
+ strlcat(buf, "O_TRUNC", ADFLAGS2LOGSTRBUFSIZ);
+ first = 0;
+ }
+
+ return buf;
+}
+