]> git.proxmox.com Git - mirror_ovs.git/commitdiff
json: New function json_string_escape().
authorBen Pfaff <blp@nicira.com>
Fri, 3 Apr 2015 05:36:31 +0000 (22:36 -0700)
committerBen Pfaff <blp@nicira.com>
Mon, 20 Apr 2015 21:02:48 +0000 (14:02 -0700)
This saves some cut-and-paste duplicated code elsewhere and will have
additional users in upcoming commits.

Signed-off-by: Ben Pfaff <blp@nicira.com>
Acked-by: Russell Bryant <rbryant@redhat.com>
lib/json.c
lib/json.h
ovn/lib/expr.c
ovn/lib/lex.c

index f004771e1ffa2e543b978614a6d702292b3eabf6..11cf0384639dd45d98d9049240c783443f50112f 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010, 2011, 2012, 2014 Nicira, Inc.
+ * Copyright (c) 2009, 2010, 2011, 2012, 2014, 2015 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -879,6 +879,16 @@ exit:
     return ok;
 }
 
+void
+json_string_escape(const char *in, struct ds *out)
+{
+    struct json json = {
+        .type = JSON_STRING,
+        .u.string = CONST_CAST(char *, in),
+    };
+    json_to_ds(&json, 0, out);
+}
+
 static void
 json_parser_input_string(struct json_parser *p, const char *s)
 {
index cfe9457ef82c641d76c47e4df7ec43a114c76c89..3497035dfee8e54d35bed4915eceafb7caac0a9e 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2009, 2010 Nicira, Inc.
+ * Copyright (c) 2009, 2010, 2015 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -131,6 +131,7 @@ void json_to_ds(const struct json *, int flags, struct ds *);
 /* JSON string formatting operations. */
 
 bool json_string_unescape(const char *in, size_t in_len, char **outp);
+void json_string_escape(const char *in, struct ds *out);
 
 #ifdef  __cplusplus
 }
index 507f34b927b08d795854567bf1b4b9c0792ac62c..fb9b1cfe0de1614695e70b28a305b8dfcfb41aa7 100644 (file)
@@ -282,16 +282,6 @@ find_bitwise_range(const union mf_subvalue *sv, int width,
     *startp = *n_bitsp = 0;
 }
 
-static void
-expr_format_string(const char *s, struct ds *ds)
-{
-    struct json json = {
-        .type = JSON_STRING,
-        .u.string = CONST_CAST(char *, s),
-    };
-    json_to_ds(&json, 0, ds);
-}
-
 static void
 expr_format_cmp(const struct expr *e, struct ds *s)
 {
@@ -300,7 +290,7 @@ expr_format_cmp(const struct expr *e, struct ds *s)
     if (!e->cmp.symbol->width) {
         ds_put_format(s, "%s %s ", e->cmp.symbol->name,
                       expr_relop_to_string(e->cmp.relop));
-        expr_format_string(e->cmp.string, s);
+        json_string_escape(e->cmp.string, s);
         return;
     }
 
index 96aa3597724f94abd81a3db317dd009f1bc9e390..824c0bca730e6db88c871317e367a52baa36214f 100644 (file)
@@ -128,16 +128,6 @@ lex_token_format_masked_integer(const struct lex_token *token, struct ds *s)
     }
 }
 
-static void
-lex_token_format_string(const char *s, struct ds *ds)
-{
-    struct json json = {
-        .type = JSON_STRING,
-        .u.string = CONST_CAST(char *, s),
-    };
-    json_to_ds(&json, 0, ds);
-}
-
 /* Appends a string representation of 'token' to 's', in a format that can be
  * losslessly parsed back by the lexer.  (LEX_T_END and LEX_T_ERROR can't be
  * parsed back.) */
@@ -155,14 +145,12 @@ lex_token_format(struct lex_token *token, struct ds *s)
 
     case LEX_T_ERROR:
         ds_put_cstr(s, "error(");
-        lex_token_format_string(token->s, s);
+        json_string_escape(token->s, s);
         ds_put_char(s, ')');
         break;
 
     case LEX_T_STRING:
-        lex_token_format_string(token->s, s);
-        break;
-
+        json_string_escape(token->s, s);
         break;
 
     case LEX_T_INTEGER: