| .. | .. |
|---|
| 1 | | -// SPDX-License-Identifier: GPL-2.0 |
|---|
| 1 | +// SPDX-License-Identifier: LGPL-2.1 |
|---|
| 2 | 2 | #include <sys/types.h> |
|---|
| 3 | 3 | #include <sys/stat.h> |
|---|
| 4 | 4 | #include <fcntl.h> |
|---|
| .. | .. |
|---|
| 22 | 22 | #undef O_LARGEFILE |
|---|
| 23 | 23 | #define O_LARGEFILE 00100000 |
|---|
| 24 | 24 | |
|---|
| 25 | | -size_t open__scnprintf_flags(unsigned long flags, char *bf, size_t size) |
|---|
| 25 | +size_t open__scnprintf_flags(unsigned long flags, char *bf, size_t size, bool show_prefix) |
|---|
| 26 | 26 | { |
|---|
| 27 | + const char *prefix = "O_"; |
|---|
| 27 | 28 | int printed = 0; |
|---|
| 28 | 29 | |
|---|
| 30 | + if ((flags & O_ACCMODE) == O_RDONLY) |
|---|
| 31 | + printed = scnprintf(bf, size, "%s%s", show_prefix ? prefix : "", "RDONLY"); |
|---|
| 29 | 32 | if (flags == 0) |
|---|
| 30 | | - return scnprintf(bf, size, "RDONLY"); |
|---|
| 33 | + return printed; |
|---|
| 31 | 34 | #define P_FLAG(n) \ |
|---|
| 32 | 35 | if (flags & O_##n) { \ |
|---|
| 33 | | - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", #n); \ |
|---|
| 36 | + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", #n); \ |
|---|
| 34 | 37 | flags &= ~O_##n; \ |
|---|
| 35 | 38 | } |
|---|
| 36 | 39 | |
|---|
| .. | .. |
|---|
| 57 | 60 | #endif |
|---|
| 58 | 61 | #ifdef O_DSYNC |
|---|
| 59 | 62 | if ((flags & O_SYNC) == O_SYNC) |
|---|
| 60 | | - printed += scnprintf(bf + printed, size - printed, "%s%s", printed ? "|" : "", "SYNC"); |
|---|
| 63 | + printed += scnprintf(bf + printed, size - printed, "%s%s%s", printed ? "|" : "", show_prefix ? prefix : "", "SYNC"); |
|---|
| 61 | 64 | else { |
|---|
| 62 | 65 | P_FLAG(DSYNC); |
|---|
| 63 | 66 | } |
|---|
| .. | .. |
|---|
| 81 | 84 | if (!(flags & O_CREAT)) |
|---|
| 82 | 85 | arg->mask |= 1 << (arg->idx + 1); /* Mask the mode parm */ |
|---|
| 83 | 86 | |
|---|
| 84 | | - return open__scnprintf_flags(flags, bf, size); |
|---|
| 87 | + return open__scnprintf_flags(flags, bf, size, arg->show_string_prefix); |
|---|
| 85 | 88 | } |
|---|