From 4b11c57a46426b5ca5c49eb7632e5365293ab696 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Thu, 31 Oct 2002 19:23:46 +0100
Subject: [PATCH] Some reorder of the functions.

Rev: src/nettle/examples/sexp-conv.c:1.14
---
 examples/sexp-conv.c | 175 ++++++++++++++++++++++---------------------
 1 file changed, 91 insertions(+), 84 deletions(-)

diff --git a/examples/sexp-conv.c b/examples/sexp-conv.c
index 2b197278..200f115a 100644
--- a/examples/sexp-conv.c
+++ b/examples/sexp-conv.c
@@ -63,6 +63,9 @@ enum sexp_token
     SEXP_EOF,
   };
 
+
+/* Input */
+
 struct sexp_input
 {
   FILE *f;
@@ -98,32 +101,6 @@ sexp_input_init(struct sexp_input *input, FILE *f)
   nettle_buffer_init(&input->string);
 }
 
-struct sexp_output
-{
-  FILE *f;
-
-  const struct nettle_armor *coding;
-  unsigned coding_indent;
-  
-  union {
-    struct base64_decode_ctx base64;
-    /* NOTE: There's no context for hex encoding */
-  } state;
-  
-  unsigned pos;
-};
-
-static void
-sexp_output_init(struct sexp_output *output, FILE *f)
-{
-  output->f = f;
-  output->coding = NULL;
-
-  output->pos = 0;
-}
-
-
-/* Input */
 
 static void
 sexp_get_raw_char(struct sexp_input *input)
@@ -539,6 +516,30 @@ sexp_get_token(struct sexp_input *input, enum sexp_mode mode)
 
 /* Output routines */
 
+struct sexp_output
+{
+  FILE *f;
+
+  const struct nettle_armor *coding;
+  unsigned coding_indent;
+  
+  union {
+    struct base64_decode_ctx base64;
+    /* NOTE: There's no context for hex encoding */
+  } state;
+  
+  unsigned pos;
+};
+
+static void
+sexp_output_init(struct sexp_output *output, FILE *f)
+{
+  output->f = f;
+  output->coding = NULL;
+
+  output->pos = 0;
+}
+
 #define LINE_WIDTH 60
 
 static void
@@ -772,68 +773,14 @@ sexp_convert_string(struct sexp_input *input, enum sexp_mode mode_in,
     die("Invalid string.\n");
 }
 
-static void
-sexp_convert_item(struct sexp_input *input, enum sexp_mode mode_in,
-		  struct sexp_output *output, enum sexp_mode mode_out,
-		  unsigned indent);
+
+
+/* Parsing and conversion functions. */
 
 static void
 sexp_convert_list(struct sexp_input *input, enum sexp_mode mode_in,
 		  struct sexp_output *output, enum sexp_mode mode_out,
-		  unsigned indent)
-{
-  unsigned item;
-
-  sexp_put_list_start(output);
-  
-  for (item = 0;; item++)
-    {
-      sexp_get_token(input, mode_in);
-
-      if (input->token == SEXP_LIST_END)
-	{
-	  sexp_put_list_end(output);
-	  return;
-	}
-
-      if (mode_out == SEXP_ADVANCED)
-	{
-	  /* FIXME: Adapt pretty printing to handle a big first
-	   * element. */
-	  if (item == 1)
-	    {
-	      sexp_put_char(output, ' ');
-	      indent = output->pos;
-	    }
-	  else if (item > 1)
-	    sexp_put_newline(output, indent);
-	}
-
-      sexp_convert_item(input, mode_in, output, mode_out, indent);
-    }
-}
-
-static void
-sexp_convert_file(struct sexp_input *input, enum sexp_mode mode_in,
-		  struct sexp_output *output, enum sexp_mode mode_out)
-{
-  sexp_get_char(input);
-  sexp_get_token(input, mode_in);
-
-  while (input->token != SEXP_EOF)
-    {
-      sexp_convert_item(input, mode_in, output, mode_out, 0);
-      if (mode_out != SEXP_CANONICAL)
-	sexp_put_newline(output, 0);
-	  
-      sexp_get_token(input, mode_in);
-    }
-
-  if (fflush(output->f) < 0)
-    die("Final fflush failed: %s.\n", strerror(errno));
-}
-
-
+		  unsigned indent);
 
 static void
 sexp_skip_token(struct sexp_input *input, enum sexp_mode mode,
@@ -903,6 +850,66 @@ sexp_convert_item(struct sexp_input *input, enum sexp_mode mode_in,
     }
 }
 
+static void
+sexp_convert_list(struct sexp_input *input, enum sexp_mode mode_in,
+		  struct sexp_output *output, enum sexp_mode mode_out,
+		  unsigned indent)
+{
+  unsigned item;
+
+  sexp_put_list_start(output);
+  
+  for (item = 0;; item++)
+    {
+      sexp_get_token(input, mode_in);
+
+      if (input->token == SEXP_LIST_END)
+	{
+	  sexp_put_list_end(output);
+	  return;
+	}
+
+      if (mode_out == SEXP_ADVANCED)
+	{
+	  /* FIXME: Adapt pretty printing to handle a big first
+	   * element. */
+	  if (item == 1)
+	    {
+	      sexp_put_char(output, ' ');
+	      indent = output->pos;
+	    }
+	  else if (item > 1)
+	    sexp_put_newline(output, indent);
+	}
+
+      sexp_convert_item(input, mode_in, output, mode_out, indent);
+    }
+}
+
+static void
+sexp_convert_file(struct sexp_input *input, enum sexp_mode mode_in,
+		  struct sexp_output *output, enum sexp_mode mode_out)
+{
+  sexp_get_char(input);
+  sexp_get_token(input, mode_in);
+
+  while (input->token != SEXP_EOF)
+    {
+      sexp_convert_item(input, mode_in, output, mode_out, 0);
+      if (mode_out != SEXP_CANONICAL)
+	sexp_put_newline(output, 0);
+	  
+      sexp_get_token(input, mode_in);
+    }
+
+  if (fflush(output->f) < 0)
+    die("Final fflush failed: %s.\n", strerror(errno));
+}
+
+
+
+/* Argument parsing and main program */
+
 static int
 match_argument(const char *given, const char *name)
 {
-- 
GitLab