diff --git a/sexp.c b/sexp.c
index 3c65354895a244e46a9b58dc78e72572bc2d8c3c..112b694bdd2c9325c949059b43110fec58c35d82 100644
--- a/sexp.c
+++ b/sexp.c
@@ -28,7 +28,9 @@
 #include <stdlib.h>
 #include <string.h>
 
-void
+/* Initializes the iterator. You have to call next to get to the first
+ * element. */
+static void
 sexp_iterator_init(struct sexp_iterator *iterator,
 		   unsigned length, const uint8_t *input)
 {
@@ -46,6 +48,14 @@ sexp_iterator_init(struct sexp_iterator *iterator,
    * skip white space here. */
 }
 
+int
+sexp_iterator_first(struct sexp_iterator *iterator,
+		    unsigned length, const uint8_t *input)
+{
+  sexp_iterator_init(iterator, length, input);
+  return sexp_iterator_next(iterator);
+}
+
 #define EMPTY(i) ((i)->pos == (i)->length)
 #define NEXT(i) ((i)->buffer[(i)->pos++])
 
diff --git a/sexp.h b/sexp.h
index bf0d9adb5c9155fe7b55b7479ffc532f96d78675..151603777216fa3808d970ecdcda1365fb303a35 100644
--- a/sexp.h
+++ b/sexp.h
@@ -51,13 +51,13 @@ struct sexp_iterator
 };
 
 
-/* Initializes the iterator. You have to call next to get to the first
- * element. */
-void
-sexp_iterator_init(struct sexp_iterator *iterator,
-		   unsigned length, const uint8_t *input);
-
 /* All these functions return 1 on success, 0 on failure */
+
+/* Initializes the iterator. */
+int
+sexp_iterator_first(struct sexp_iterator *iterator,
+		    unsigned length, const uint8_t *input);
+
 int
 sexp_iterator_next(struct sexp_iterator *iterator);