Const'ify the CDB format string passed to the CDB parsing routines
authorPeter Avalos <pavalos@dragonflybsd.org>
Sat, 24 Nov 2007 01:53:50 +0000 (01:53 +0000)
committerPeter Avalos <pavalos@dragonflybsd.org>
Sat, 24 Nov 2007 01:53:50 +0000 (01:53 +0000)
(csio_decode_visit() and family).

Obtained-from: FreeBSD

lib/libcam/cam_cdbparse.3
lib/libcam/scsi_cmdparse.c
sys/sys/camlib.h

index f3e215f..1f5b133 100644 (file)
@@ -26,7 +26,7 @@
 .\" SUCH DAMAGE.
 .\"
 .\" $FreeBSD: src/lib/libcam/cam_cdbparse.3,v 1.3.2.11 2002/12/29 16:35:35 schweikh Exp $
-.\" $DragonFly: src/lib/libcam/cam_cdbparse.3,v 1.3 2006/05/26 19:39:38 swildner Exp $
+.\" $DragonFly: src/lib/libcam/cam_cdbparse.3,v 1.4 2007/11/24 01:53:50 pavalos Exp $
 .\"
 .\" This man page borrows heavily from the old scsi(3) man page, which had
 .\" the following copyright:
@@ -89,7 +89,7 @@
 .Fa "u_int32_t flags"
 .Fa "int retry_count"
 .Fa "int timeout"
-.Fa "char *cmd_spec"
+.Fa "const char *cmd_spec"
 .Fa "..."
 .Fc
 .Ft int
 .Fa "u_int32_t flags"
 .Fa "int retry_count"
 .Fa "int timeout"
-.Fa "char *cmd_spec"
+.Fa "const char *cmd_spec"
 .Fa "int (*arg_get)(void *hook, char *field_name)"
 .Fa "void *gethook"
 .Fc
 .Ft int
 .Fo csio_decode
 .Fa "struct ccb_scsiio *csio"
-.Fa "char *fmt"
+.Fa "const char *fmt"
 .Fa "..."
 .Fc
 .Ft int
 .Fo csio_decode_visit
 .Fa "struct ccb_scsiio *csio"
-.Fa "char *fmt"
+.Fa "const char *fmt"
 .Fa "void (*arg_put)(void *hook"
 .Fa "int letter"
 .Fa "void *val"
 .Fo buff_decode
 .Fa "u_int8_t *buff"
 .Fa "size_t len"
-.Fa "char *fmt"
+.Fa "const char *fmt"
 .Fa "..."
 .Fc
 .Ft int
 .Fo buff_decode_visit
 .Fa "u_int8_t *buff"
 .Fa "size_t len"
-.Fa "char *fmt"
+.Fa "const char *fmt"
 .Fa "void (*arg_put)(void *, int, void *, int, char *)"
 .Fa "void *puthook"
 .Fc
 .Ft int
 .Fo csio_encode
 .Fa "struct ccb_scsiio *csio"
-.Fa "char *fmt"
+.Fa "const char *fmt"
 .Fa "..."
 .Fc
 .Ft int
 .Fo csio_encode_visit
 .Fa "struct ccb_scsiio *csio"
-.Fa "char *fmt"
+.Fa "const char *fmt"
 .Fa "int (*arg_get)(void *hook, char *field_name)"
 .Fa "void *gethook"
 .Fc
 .Fo buff_encode_visit
 .Fa "u_int8_t *buff"
 .Fa "size_t len"
-.Fa "char *fmt"
+.Fa "const char *fmt"
 .Fa "int (*arg_get)(void *hook, char *field_name)"
 .Fa "void *gethook"
 .Fc
index 91d53a2..98f28c2 100644 (file)
@@ -33,7 +33,7 @@
  * SUCH DAMAGE.
  * From: scsi.c,v 1.8 1997/02/22 15:07:54 peter Exp $
  * $FreeBSD: src/lib/libcam/scsi_cmdparse.c,v 1.3.2.1 2000/08/14 05:42:30 kbyanc Exp $
- * $DragonFly: src/lib/libcam/scsi_cmdparse.c,v 1.2 2003/06/17 04:26:48 dillon Exp $
+ * $DragonFly: src/lib/libcam/scsi_cmdparse.c,v 1.3 2007/11/24 01:53:50 pavalos Exp $
  */
 #include <stdlib.h>
 #include <stdio.h>
@@ -98,7 +98,7 @@
 static int
 do_buff_decode(u_int8_t *databuf, size_t len,
               void (*arg_put)(void *, int , void *, int, char *),
-              void *puthook, char *fmt, va_list ap)
+              void *puthook, const char *fmt, va_list ap)
 {
        int assigned = 0;
        int width;
@@ -109,6 +109,7 @@ do_buff_decode(u_int8_t *databuf, size_t len,
                                   0x1f, 0x3f, 0x7f, 0xff};
        int value;
        u_char *base = databuf;
+       char *intendp;
        char letter;
        char field_name[80];
 
@@ -176,7 +177,8 @@ do_buff_decode(u_int8_t *databuf, size_t len,
                case 't':       /* Bit (field) */
                case 'b':       /* Bits */
                        fmt++;
-                       width = strtol(fmt, &fmt, 10);
+                       width = strtol(fmt, &intendp, 10);
+                       fmt = intendp;
                        if (width > 8)
                                done = 1;
                        else {
@@ -201,7 +203,8 @@ do_buff_decode(u_int8_t *databuf, size_t len,
                case 'i':       /* Integral values */
                        shift = 0;
                        fmt++;
-                       width = strtol(fmt, &fmt, 10);
+                       width = strtol(fmt, &intendp, 10);
+                       fmt = intendp;
                        switch(width) {
                        case 1:
                                ARG_PUT(*databuf);
@@ -239,7 +242,8 @@ do_buff_decode(u_int8_t *databuf, size_t len,
                                           spaces  */
                        shift = 0;
                        fmt++;
-                       width = strtol(fmt, &fmt, 10);
+                       width = strtol(fmt, &intendp, 10);
+                       fmt = intendp;
                        if (!suppress) {
                                if (arg_put)
                                        (*arg_put)(puthook,
@@ -281,8 +285,10 @@ do_buff_decode(u_int8_t *databuf, size_t len,
                                 */
                                width = (arg_put) ? 0 : va_arg(ap, int);
                                fmt++;
-                       } else
-                               width = strtol(fmt, &fmt, 10);
+                       } else {
+                               width = strtol(fmt, &intendp, 10);
+                               fmt = intendp;
+                       }
 
                        if (plus)
                                databuf += width;       /* Relative seek */
@@ -339,10 +345,11 @@ do_buff_decode(u_int8_t *databuf, size_t len,
  */
 
 static int
-next_field(char **pp, char *fmt, int *width_p, int *value_p, char *name,
+next_field(const char **pp, char *fmt, int *width_p, int *value_p, char *name,
           int n_name, int *error_p, int *suppress_p)
 {
-       char *p = *pp;
+       const char *p = *pp;
+       char *intendp;
 
        int something = 0;
 
@@ -402,7 +409,8 @@ next_field(char **pp, char *fmt, int *width_p, int *value_p, char *name,
                                suppress = 1;
                        } else if (isxdigit(*p)) {
                                something = 1;
-                               value = strtol(p, &p, 16);
+                               value = strtol(p, &intendp, 16);
+                               p = intendp;
                                state = START_FIELD;
                        } else if (tolower(*p) == 'v') {
                                p++;
@@ -419,7 +427,8 @@ next_field(char **pp, char *fmt, int *width_p, int *value_p, char *name,
 
                                *fmt = 'i';
                                field_size = 8;
-                               field_width = strtol(p, &p, 10);
+                               field_width = strtol(p, &intendp, 10);
+                               p = intendp;
                                state = DONE;
 
                        } else if (tolower(*p) == 't') {
@@ -434,7 +443,8 @@ next_field(char **pp, char *fmt, int *width_p, int *value_p, char *name,
 
                                *fmt = 'b';
                                field_size = 1;
-                               field_width = strtol(p, &p, 10);
+                               field_width = strtol(p, &intendp, 10);
+                               p = intendp;
                                state = DONE;
                        } else if (tolower(*p) == 's') {
                                /* Seek */
@@ -446,7 +456,8 @@ next_field(char **pp, char *fmt, int *width_p, int *value_p, char *name,
                                        value = *value_p;
                                } else {
                                        something = 1;
-                                       value = strtol(p, &p, 0);
+                                       value = strtol(p, &intendp, 0);
+                                       p = intendp;
                                }
                                state = DONE;
                        } else {
@@ -471,7 +482,8 @@ next_field(char **pp, char *fmt, int *width_p, int *value_p, char *name,
                        if (isdigit(*p)) {
                                *fmt = 'b';
                                field_size = 1;
-                               field_width = strtol(p, &p, 10);
+                               field_width = strtol(p, &intendp, 10);
+                               p = intendp;
                                state = DONE;
                        } else if (*p == 'i') {
 
@@ -480,7 +492,8 @@ next_field(char **pp, char *fmt, int *width_p, int *value_p, char *name,
 
                                *fmt = 'i';
                                field_size = 8;
-                               field_width = strtol(p, &p, 10);
+                               field_width = strtol(p, &intendp, 10);
+                               p = intendp;
                                state = DONE;
                        } else if (*p == 'b') {
 
@@ -489,7 +502,8 @@ next_field(char **pp, char *fmt, int *width_p, int *value_p, char *name,
 
                                *fmt = 'b';
                                field_size = 1;
-                               field_width = strtol(p, &p, 10);
+                               field_width = strtol(p, &intendp, 10);
+                               p = intendp;
                                state = DONE;
                        } else {
                                fprintf(stderr, "Invalid startfield %c "
@@ -520,7 +534,8 @@ next_field(char **pp, char *fmt, int *width_p, int *value_p, char *name,
 
 static int
 do_encode(u_char *buff, size_t vec_max, size_t *used,
-         int (*arg_get)(void *, char *), void *gethook, char *fmt, va_list ap)
+         int (*arg_get)(void *, char *), void *gethook, const char *fmt,
+         va_list ap)
 {
        int ind;
        int shift;
@@ -640,7 +655,7 @@ do_encode(u_char *buff, size_t vec_max, size_t *used,
 }
 
 int
-csio_decode(struct ccb_scsiio *csio, char *fmt, ...)
+csio_decode(struct ccb_scsiio *csio, const char *fmt, ...)
 {
        va_list ap;
 
@@ -651,7 +666,7 @@ csio_decode(struct ccb_scsiio *csio, char *fmt, ...)
 }
 
 int
-csio_decode_visit(struct ccb_scsiio *csio, char *fmt,
+csio_decode_visit(struct ccb_scsiio *csio, const char *fmt,
                  void (*arg_put)(void *, int, void *, int, char *),
                  void *puthook)
 {
@@ -671,7 +686,7 @@ csio_decode_visit(struct ccb_scsiio *csio, char *fmt,
 }
 
 int
-buff_decode(u_int8_t *buff, size_t len, char *fmt, ...)
+buff_decode(u_int8_t *buff, size_t len, const char *fmt, ...)
 {
        va_list ap;
 
@@ -681,7 +696,7 @@ buff_decode(u_int8_t *buff, size_t len, char *fmt, ...)
 }
 
 int
-buff_decode_visit(u_int8_t *buff, size_t len, char *fmt,
+buff_decode_visit(u_int8_t *buff, size_t len, const char *fmt,
                  void (*arg_put)(void *, int, void *, int, char *),
                  void *puthook)
 {
@@ -705,7 +720,8 @@ buff_decode_visit(u_int8_t *buff, size_t len, char *fmt,
  */
 int
 csio_build(struct ccb_scsiio *csio, u_int8_t *data_ptr, u_int32_t dxfer_len,
-          u_int32_t flags, int retry_count, int timeout, char *cmd_spec, ...)
+          u_int32_t flags, int retry_count, int timeout, const char *cmd_spec,
+          ...)
 {
        size_t cmdlen;
        int retval;
@@ -739,7 +755,7 @@ csio_build(struct ccb_scsiio *csio, u_int8_t *data_ptr, u_int32_t dxfer_len,
 int
 csio_build_visit(struct ccb_scsiio *csio, u_int8_t *data_ptr,
                 u_int32_t dxfer_len, u_int32_t flags, int retry_count,
-                int timeout, char *cmd_spec,
+                int timeout, const char *cmd_spec,
                 int (*arg_get)(void *hook, char *field_name), void *gethook)
 {
        va_list ap;
@@ -779,7 +795,7 @@ csio_build_visit(struct ccb_scsiio *csio, u_int8_t *data_ptr,
 }
 
 int
-csio_encode(struct ccb_scsiio *csio, char *fmt, ...)
+csio_encode(struct ccb_scsiio *csio, const char *fmt, ...)
 {
        va_list ap;
 
@@ -792,7 +808,7 @@ csio_encode(struct ccb_scsiio *csio, char *fmt, ...)
 }
 
 int
-buff_encode_visit(u_int8_t *buff, size_t len, char *fmt,
+buff_encode_visit(u_int8_t *buff, size_t len, const char *fmt,
                  int (*arg_get)(void *hook, char *field_name), void *gethook)
 {
        va_list ap;
@@ -810,7 +826,7 @@ buff_encode_visit(u_int8_t *buff, size_t len, char *fmt,
 }
 
 int
-csio_encode_visit(struct ccb_scsiio *csio, char *fmt,
+csio_encode_visit(struct ccb_scsiio *csio, const char *fmt,
                  int (*arg_get)(void *hook, char *field_name), void *gethook)
 {
        va_list ap;
index 143468c..16ce001 100644 (file)
@@ -23,7 +23,7 @@
  * SUCH DAMAGE.
  *
  * $FreeBSD: src/lib/libcam/camlib.h,v 1.2 1999/08/28 00:04:06 peter Exp $
- * $DragonFly: src/sys/sys/camlib.h,v 1.4 2007/11/22 15:53:16 pavalos Exp $
+ * $DragonFly: src/sys/sys/camlib.h,v 1.5 2007/11/24 01:53:50 pavalos Exp $
  */
 /*
  * Buffer encoding/decoding routines taken from the original FreeBSD SCSI
@@ -158,27 +158,30 @@ int                       cam_get_device(const char *path, char *dev_name,
 /*
  * Buffer encoding/decoding routines, from the old SCSI library.
  */
-int csio_decode(struct ccb_scsiio *csio, char *fmt, ...) __printflike(2, 3);
-int csio_decode_visit(struct ccb_scsiio *csio, char *fmt,
+int csio_decode(struct ccb_scsiio *csio, const char *fmt, ...)
+               __printflike(2, 3);
+int csio_decode_visit(struct ccb_scsiio *csio, const char *fmt,
                      void (*arg_put)(void *, int, void *, int, char *),
                      void *puthook);
-int buff_decode(u_int8_t *buff, size_t len, char *fmt, ...) __printflike(3, 4);
-int buff_decode_visit(u_int8_t *buff, size_t len, char *fmt,
+int buff_decode(u_int8_t *buff, size_t len, const char *fmt, ...)
+               __printflike(3, 4);
+int buff_decode_visit(u_int8_t *buff, size_t len, const char *fmt,
                      void (*arg_put)(void *, int, void *, int, char *),
                      void *puthook);
 int csio_build(struct ccb_scsiio *csio, u_int8_t *data_ptr,
               u_int32_t dxfer_len, u_int32_t flags, int retry_count,
-              int timeout, char *cmd_spec, ...);
+              int timeout, const char *cmd_spec, ...);
 int csio_build_visit(struct ccb_scsiio *csio, u_int8_t *data_ptr,
                     u_int32_t dxfer_len, u_int32_t flags, int retry_count,
-                    int timeout, char *cmd_spec,
+                    int timeout, const char *cmd_spec,
                     int (*arg_get)(void *hook, char *field_name),
                     void *gethook);
-int csio_encode(struct ccb_scsiio *csio, char *fmt, ...) __printflike(2, 3);
-int buff_encode_visit(u_int8_t *buff, size_t len, char *fmt,
+int csio_encode(struct ccb_scsiio *csio, const char *fmt, ...)
+               __printflike(2, 3);
+int buff_encode_visit(u_int8_t *buff, size_t len, const char *fmt,
                      int (*arg_get)(void *hook, char *field_name),
                      void *gethook);
-int csio_encode_visit(struct ccb_scsiio *csio, char *fmt,
+int csio_encode_visit(struct ccb_scsiio *csio, const char *fmt,
                      int (*arg_get)(void *hook, char *field_name),
                      void *gethook);
 __END_DECLS