.. | .. |
---|
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 | } |
---|