| 109 | } |
| 110 | |
| 111 | void usage(UtilSvc* uSvc, const ISC_STATUS code, const char* message = NULL) |
| 112 | { |
| 113 | /* |
| 114 | string msg; |
| 115 | va_list params; |
| 116 | if (message) |
| 117 | { |
| 118 | va_start(params, message); |
| 119 | msg.vprintf(message, params); |
| 120 | va_end(params); |
| 121 | } |
| 122 | */ |
| 123 | |
| 124 | if (uSvc->isService()) |
| 125 | { |
| 126 | fb_assert(code); |
| 127 | Arg::Gds gds(code); |
| 128 | if (message) |
| 129 | gds << message; |
| 130 | gds.raise(); |
| 131 | } |
| 132 | |
| 133 | if (code) |
| 134 | { |
| 135 | printMsg(1, false); // ERROR: |
| 136 | USHORT dummy; |
| 137 | USHORT number = (USHORT) gds__decode(code, &dummy, &dummy); |
| 138 | fb_assert(number); |
| 139 | if (message) |
| 140 | printMsg(number, SafeArg() << message); |
| 141 | else |
| 142 | printMsg(number); |
| 143 | fprintf(stderr, "\n"); |
| 144 | } |
| 145 | |
| 146 | const int mainUsage[] = { 2, 3, 4, 5, 6, 0 }; |
| 147 | const int notes[] = { 19, 20, 21, 22, 26, 27, 28, 79, 0 }; |
| 148 | const Switches::in_sw_tab_t* const base = nbackup_action_in_sw_table; |
| 149 | |
| 150 | for (int i = 0; mainUsage[i]; ++i) |
| 151 | printMsg(mainUsage[i]); |
| 152 | |
| 153 | printMsg(7); // exclusive options are: |
| 154 | for (const Switches::in_sw_tab_t* p = base; p->in_sw; ++p) |
| 155 | { |
| 156 | if (p->in_sw_msg && p->in_sw_optype == nboExclusive) |
| 157 | printMsg(p->in_sw_msg); |
| 158 | } |
| 159 | |
| 160 | printMsg(72); // special options are: |
| 161 | for (const Switches::in_sw_tab_t* p = base; p->in_sw; ++p) |
| 162 | { |
| 163 | if (p->in_sw_msg && p->in_sw_optype == nboSpecial) |
| 164 | printMsg(p->in_sw_msg); |
| 165 | } |
| 166 | |
| 167 | printMsg(24); // general options are: |
| 168 | for (const Switches::in_sw_tab_t* p = base; p->in_sw; ++p) |
no test coverage detected