]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/mini-os.git/commitdiff
extras/mini-os/tpmback.c: fix compilation error.
authorDushyant Behl <myselfdushyantbehl@gmail.com>
Sun, 20 Jul 2014 20:52:59 +0000 (02:22 +0530)
committerIan Campbell <ian.campbell@citrix.com>
Mon, 21 Jul 2014 11:10:46 +0000 (12:10 +0100)
This patch is with respect to the following discussion on xen-devel -
http://lists.xenproject.org/archives/html/xen-devel/2014-07/msg01991.html

The file extras/mini-os/tpmback.c was failing compilation on certain compilers
because of size mismatch between enum and int. Earlier the code used to read
value of enum using %d format, which failed compilation on some compilers:

tpmback.c: In function ‘tpmif_change_state’:
tpmback.c:350:4: error: format ‘%d’ expects argument of type ‘int *’,
but argument 3 has type ‘enum xenbus_state *’ [-Werror=format=]
    if(sscanf(value, "%d", &readst) != 1) {
    ^

Now the value is read into an actual int variable and then assigned to the
enum.

Signed-off-by:- Dushyant Behl <myselfdushyantbehl@gmail.com>
Acked-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
[ ijc -- added the actual error to the commit log ]

tpmback.c

index 0601eb375d3f3f677922412d4c61256ce5e1c3cb..31da8d5946498ce5c2d2b987e08e567806e1c6d9 100644 (file)
--- a/tpmback.c
+++ b/tpmback.c
@@ -332,6 +332,7 @@ error_post_irq:
  * returns 0 on success and non-zero on error */
 int tpmif_change_state(tpmif_t* tpmif, enum xenbus_state state)
 {
+   int tempst;
    char path[512];
    char *value;
    char *err;
@@ -347,11 +348,12 @@ int tpmif_change_state(tpmif_t* tpmif, enum xenbus_state state)
       free(err);
       return -1;
    }
-   if(sscanf(value, "%d", &readst) != 1) {
+   if(sscanf(value, "%d", &tempst) != 1) {
       TPMBACK_ERR("Non integer value (%s) in %s ??\n", value, path);
       free(value);
       return -1;
    }
+   readst = (enum xenbus_state) tempst;
    free(value);
 
    /* It's possible that the backend state got updated by hotplug or something else behind our back */