Lines Matching refs:op
151 parse_cmd_line(struct opts_t *op, int argc, char *argv[]) in parse_cmd_line() argument
167 if (op->fname) { in parse_cmd_line()
172 op->do_binary = true; in parse_cmd_line()
173 op->fname = optarg; in parse_cmd_line()
176 op->do_cdb = true; in parse_cmd_line()
184 op->err_given = true; in parse_cmd_line()
185 op->es_val = n; in parse_cmd_line()
188 if (op->fname) { in parse_cmd_line()
193 op->file_given = true; in parse_cmd_line()
194 op->fname = optarg; in parse_cmd_line()
198 op->do_help = true; in parse_cmd_line()
201 op->hex_count++; in parse_cmd_line()
204 if (op->fname) { in parse_cmd_line()
209 op->file_given = true; in parse_cmd_line()
210 op->fname = optarg; in parse_cmd_line()
213 op->ignore_first = true; in parse_cmd_line()
216 if (! sgj_init_state(&op->json_st, optarg)) { in parse_cmd_line()
217 int bad_char = op->json_st.first_bad_char; in parse_cmd_line()
230 op->no_space = true; in parse_cmd_line()
233 op->no_decode = true; in parse_cmd_line()
244 op->do_status = true; in parse_cmd_line()
245 op->sstatus = ui; in parse_cmd_line()
248 op->verbose_given = true; in parse_cmd_line()
249 ++op->verbose; in parse_cmd_line()
252 op->version_given = true; in parse_cmd_line()
255 op->wfname = optarg; in parse_cmd_line()
261 if (op->err_given) in parse_cmd_line()
266 if (op->no_space) { in parse_cmd_line()
267 if (op->no_space_str) { in parse_cmd_line()
269 if (strlen(op->no_space_str) > sizeof(concat_buff)) { in parse_cmd_line()
273 strcpy(concat_buff, op->no_space_str); in parse_cmd_line()
280 if (op->version_given) in parse_cmd_line()
284 op->no_space_str = concat_buff; in parse_cmd_line()
286 op->no_space_str = avp; in parse_cmd_line()
295 if (op->sense_len > MAX_SENSE_LEN) { in parse_cmd_line()
299 op->sense[op->sense_len++] = (uint8_t)val; in parse_cmd_line()
307 write2wfn(FILE * fp, struct opts_t * op) in write2wfn() argument
313 for (k = 0, n = 0; k < op->sense_len; ++k) { in write2wfn()
314 n += sprintf(b + n, "0x%02x,", op->sense[k]); in write2wfn()
320 (int)s, n + 1, op->wfname); in write2wfn()
329 n + 1, op->wfname); in write2wfn()
342 struct opts_t * op; in main() local
350 op = (struct opts_t *)sg_memalign(sizeof(*op), 0 /* page align */, in main()
352 if (NULL == op) { in main()
359 ret = parse_cmd_line(op, argc, argv); in main()
363 if (op->verbose_given && op->version_given) { in main()
365 op->verbose_given = false; in main()
366 op->version_given = false; in main()
367 op->verbose = 0; in main()
368 } else if (! op->verbose_given) { in main()
370 op->verbose = 2; in main()
372 pr2serr("keep verbose=%d\n", op->verbose); in main()
374 if (op->verbose_given && op->version_given) in main()
377 if (op->version_given) { in main()
384 } else if (op->do_help) { in main()
388 as_json = op->json_st.pr_as_json; in main()
389 jsp = &op->json_st; in main()
393 if (op->err_given) { in main()
397 if (! sg_exit2str(op->es_val, op->verbose > 1, dlen, d)) in main()
398 snprintf(d, dlen, "Unable to decode exit status %d", op->es_val); in main()
399 if (1 & op->verbose) /* odd values of verbose print to stderr */ in main()
406 if (op->do_status) { in main()
407 sg_get_scsi_status_str(op->sstatus, blen, b); in main()
411 if ((0 == op->sense_len) && op->no_space_str) { in main()
412 if (op->verbose > 2) in main()
413 pr2serr("no_space str: %s\n", op->no_space_str); in main()
414 cp = op->no_space_str; in main()
422 op->sense[op->sense_len++] = (uint8_t)ui; in main()
426 if ((0 == op->sense_len) && (! op->do_binary) && (! op->file_given)) { in main()
427 if (op->do_status) { in main()
437 if (op->sense_len && (op->do_binary || op->file_given)) { in main()
443 if (op->do_binary && op->file_given) { in main()
450 if (op->do_binary) { in main()
451 fp = fopen(op->fname, "r"); in main()
454 pr2serr("unable to open file: %s: %s\n", op->fname, in main()
459 s = fread(op->sense, 1, MAX_SENSE_LEN, fp); in main()
462 pr2serr("read nothing from file: %s\n", op->fname); in main()
466 op->sense_len = s; in main()
467 } else if (op->file_given) { in main()
468 ret = sg_f2hex_arr(op->fname, false, op->no_space, op->sense, in main()
469 &op->sense_len, in main()
470 (op->ignore_first ? -MAX_SENSE_LEN : in main()
473 pr2serr("unable to decode ASCII hex from file: %s\n", op->fname); in main()
478 if (op->sense_len > 0) { in main()
479 if (op->wfname || op->hex_count) { in main()
480 if (op->wfname) { in main()
481 if (NULL == ((fp = fopen(op->wfname, "w")))) { in main()
484 pr2serr("trying to write to %s\n", op->wfname); in main()
491 if (op->wfname && (1 == op->hex_count)) in main()
492 write2wfn(fp, op); in main()
493 else if (op->hex_count && (2 != op->hex_count)) in main()
494 dStrHexFp((const char *)op->sense, op->sense_len, in main()
495 ((1 == op->hex_count) ? 1 : -1), fp); in main()
496 else if (op->hex_count) in main()
497 dStrHexFp((const char *)op->sense, op->sense_len, 0, fp); in main()
499 s = fwrite(op->sense, 1, op->sense_len, fp); in main()
500 if ((int)s != op->sense_len) in main()
502 (int)s, op->sense_len, op->wfname); in main()
504 if (op->wfname) in main()
506 } else if (op->no_decode) { in main()
507 if (op->verbose > 1) in main()
509 (op->do_cdb ? "cdb" : "sense")); in main()
510 } else if (op->do_cdb) { in main()
513 opcode = op->sense[0]; in main()
514 if ((0x75 == opcode) || (0x7e == opcode) || (op->sense_len > 16)) in main()
515 sa = sg_get_unaligned_be16(op->sense + 8); in main()
516 else if (op->sense_len > 1) in main()
517 sa = op->sense[1] & 0x1f; in main()
524 sgj_js_sense(jsp, jop, op->sense, op->sense_len); in main()
526 sg_get_sense_str(NULL, op->sense, op->sense_len, in main()
527 op->verbose, blen, b); in main()
531 sg_get_sense_str(NULL, op->sense, op->sense_len, in main()
532 op->verbose, blen, b); in main()
539 if (0 == op->hex_count) in main()
540 sgj_js2file(&op->json_st, NULL, ret, stdout); in main()