Re-enable capture tests now that a a dumpcap problem has been corrected.
[obnox/wireshark/wip.git] / version_info.c
index f7b6cf69d2b5eb9478f334e793366ae29d2a785f..4d747304839b10c4c98096b74acc707f00929fe5 100644 (file)
 #include <pcre.h>      /* to get the libpcre version number */
 #endif /* HAVE_LIBPCRE */
 
-#ifdef HAVE_SOME_SNMP
-
 #ifdef HAVE_NET_SNMP
 #include <net-snmp/version.h>
 #endif /* HAVE_NET_SNMP */
 
-#ifdef HAVE_UCD_SNMP
-#include <ucd-snmp/version.h>
-#endif /* HAVE_UCD_SNMP */
-
-#endif /* HAVE_SOME_SNMP */
-
 #if (defined(HAVE_LIBGCRYPT) || defined(HAVE_LIBGNUTLS)) && defined(_WIN32)
 #include <winposixtype.h>
 #endif
 #include <windows.h>
 #endif
 
-#ifdef HAVE_LUA
+#ifdef HAVE_LUA_5_1
 #include <lua.h>
 #endif
 
+#ifdef HAVE_LIBSMI
+#include <smi.h>
+#endif
 #ifdef SVNVERSION
-       const char *svnversion = " (" SVNVERSION ")";
+       const char *wireshark_svnversion = " (" SVNVERSION ")";
 #else
-       const char *svnversion = "";
+       const char *wireshark_svnversion = "";
 #endif
 
-/*
- * Add a word wrap break point, and return its index.
- */
-static gint
-add_word_wrap_break_point(GString *str)
-{
-       g_string_append(str, " ");
-       return str->len - 1;
-}
-
-/*
- * Add punctuation at the end of a phrase, and see whether the last line in
- * the string goes past column 80; if so, replace the blank at the specified
- * point with a newline.
- */
-static void
-end_item_and_break(GString *str, char *punct, gint point)
-{
-       char *line_begin;
-
-       g_string_append(str, punct);
-       line_begin = strrchr(str->str, '\n');
-       if (line_begin == NULL)
-               line_begin = str->str;
-       else
-               line_begin++;
-       if (strlen(line_begin) > 80) {
-               g_assert(str->str[point] == ' ');
-               str->str[point] = '\n';
-       }
-}
-
 /*
  * If the string doesn't end with a newline, append one.
+ * Then word-wrap it to 80 columns.
  */
 static void
 end_string(GString *str)
 {
        size_t point;
+       char *p, *q;
 
        point = strlen(str->str);
        if (point == 0 || str->str[point - 1] != '\n')
                g_string_append(str, "\n");
+       p = str->str;
+       while (*p != '\0') {
+               q = strchr(p, '\n');
+               if (q - p > 80) {
+                       /*
+                        * Break at or before this point.
+                        */
+                       q = p + 80;
+                       while (q > p && *q != ' ')
+                               q--;
+                       if (q != p)
+                               *q = '\n';
+               }
+               p = q + 1;
+       }
 }
 
 /*
@@ -145,24 +126,22 @@ end_string(GString *str)
 void
 get_compiled_version_info(GString *str, void (*additional_info)(GString *))
 {
-       gint break_point;
-
         /* GLIB */
        g_string_append(str, "with ");
        g_string_sprintfa(str,
 #ifdef GLIB_MAJOR_VERSION
-           "GLib %d.%d.%d,", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION,
+           "GLib %d.%d.%d", GLIB_MAJOR_VERSION, GLIB_MINOR_VERSION,
            GLIB_MICRO_VERSION);
 #else
-           "GLib (version unknown),");
+           "GLib (version unknown)");
 #endif
 
-       break_point = add_word_wrap_break_point(str);
+       /* Libpcap */
+       g_string_append(str, ", ");
        get_compiled_pcap_version(str);
-       end_item_and_break(str, ",", break_point);
 
         /* LIBZ */
-       break_point = add_word_wrap_break_point(str);
+       g_string_append(str, ", ");
 #ifdef HAVE_LIBZ
        g_string_append(str, "with libz ");
 #ifdef ZLIB_VERSION
@@ -175,18 +154,14 @@ get_compiled_version_info(GString *str, void (*additional_info)(GString *))
 #endif /* HAVE_LIBZ */
 
        /* Additional application-dependent information */
-       if (additional_info) {
-               end_item_and_break(str, ",", break_point);
-               break_point = add_word_wrap_break_point(str);
+       if (additional_info)
                (*additional_info)(str);
-       }
-       end_item_and_break(str, ".", break_point);
+       g_string_append(str, ".");
 
 #ifndef HAVE_LIBPCRE
-       break_point = str->len - 1;
        g_string_append(str,
        "\nNOTE: this build doesn't support the \"matches\" operator for Wireshark filter syntax");
-       end_item_and_break(str, ".", break_point);
+       g_string_append(str, ".");
 #endif /* HAVE_LIBPCRE */
 
        end_string(str);
@@ -194,15 +169,13 @@ get_compiled_version_info(GString *str, void (*additional_info)(GString *))
 
 /*
  * Get compile-time information used only by applications that use
- * libethereal.
+ * libwireshark.
  */
 void
 get_epan_compiled_version_info(GString *str)
 {
-       gint break_point;
-
         /* PCRE */
-       break_point = str->len - 1;
+       g_string_append(str, ", ");
 #ifdef HAVE_LIBPCRE
        g_string_append(str, "with libpcre ");
 #ifdef PCRE_MAJOR
@@ -218,69 +191,51 @@ get_epan_compiled_version_info(GString *str)
        g_string_append(str, "without libpcre");
 #endif /* HAVE_LIBPCRE */
 
-       end_item_and_break(str, ",", break_point);
-
         /* SNMP */
-/* Oh, this is pretty. */
-/* Oh, ha.  you think that was pretty.  Try this:! --Wes */
-       break_point = add_word_wrap_break_point(str);
-#ifdef HAVE_SOME_SNMP
-
-#ifdef HAVE_UCD_SNMP
-       g_string_append(str, "with UCD-SNMP ");
-       g_string_append(str, VersionInfo);
-#endif /* HAVE_UCD_SNMP */
-
-#ifdef HAVE_NET_SNMP
-       g_string_append(str, "with Net-SNMP ");
-       g_string_append(str, netsnmp_get_version());
-#endif /* HAVE_NET_SNMP */
-
+       g_string_append(str, ", ");
+#ifdef HAVE_LIBSMI
+       g_string_append(str, "with SMI ");
+       g_string_append(str, SMI_VERSION_STRING);
 #else /* no SNMP library */
-       g_string_append(str, "without UCD-SNMP or Net-SNMP");
-#endif /* HAVE_SOME_SNMP */
-       end_item_and_break(str, ",", break_point);
+       g_string_append(str, "without SMI");
+#endif /* _SMI_H */
 
-        /* ADNS */
-       break_point = add_word_wrap_break_point(str);
+       /* ADNS */
+       g_string_append(str, ", ");
 #ifdef HAVE_GNU_ADNS
        g_string_append(str, "with ADNS");
 #else
        g_string_append(str, "without ADNS");
 #endif /* HAVE_GNU_ADNS */
-       end_item_and_break(str, ",", break_point);
 
         /* LUA */
-       break_point = add_word_wrap_break_point(str);
-#ifdef HAVE_LUA
+       g_string_append(str, ", ");
+#ifdef HAVE_LUA_5_1
        g_string_append(str, "with ");
        g_string_append(str, LUA_VERSION);
 #else
        g_string_append(str, "without Lua");
-#endif /* HAVE_LUA */
-       end_item_and_break(str, ",", break_point);
+#endif /* HAVE_LUA_5_1 */
 
         /* GnuTLS */
-       break_point = add_word_wrap_break_point(str);
+       g_string_append(str, ", ");
 #ifdef HAVE_LIBGNUTLS
        g_string_append(str, "with GnuTLS " LIBGNUTLS_VERSION);
 #else
        g_string_append(str, "without GnuTLS");
 #endif /* HAVE_LIBGNUTLS */
-       end_item_and_break(str, ",", break_point);
 
         /* Gcrypt */
-       break_point = add_word_wrap_break_point(str);
+       g_string_append(str, ", ");
 #ifdef HAVE_LIBGCRYPT
        g_string_append(str, "with Gcrypt " GCRYPT_VERSION);
 #else
        g_string_append(str, "without Gcrypt");
 #endif /* HAVE_LIBGCRYPT */
-       end_item_and_break(str, ",", break_point);
 
         /* Kerberos */
         /* XXX - I don't see how to get the version number, at least for KfW */
-       break_point = add_word_wrap_break_point(str);
+       g_string_append(str, ", ");
 #ifdef HAVE_KERBEROS
 #ifdef HAVE_MIT_KERBEROS
        g_string_append(str, "with MIT Kerberos");
@@ -300,8 +255,6 @@ get_epan_compiled_version_info(GString *str)
 void
 get_runtime_version_info(GString *str, void (*additional_info)(GString *))
 {
-       gint break_point;
-
 #if defined(_WIN32)
        OSVERSIONINFO info;
 #elif defined(HAVE_SYS_UTSNAME_H)
@@ -464,16 +417,15 @@ get_runtime_version_info(GString *str, void (*additional_info)(GString *))
        g_string_append(str, "an unknown OS");
 #endif
 
-       break_point = add_word_wrap_break_point(str);
+       /* Libpcap */
+       g_string_append(str, ", ");
+       get_runtime_pcap_version(str);
 
        /* Additional application-dependent information */
-       if (additional_info) {
-               end_item_and_break(str, ",", break_point);
-               break_point = add_word_wrap_break_point(str);
+       if (additional_info)
                (*additional_info)(str);
-       }
 
-       end_item_and_break(str, ".", break_point);
+       g_string_append(str, ".");
 
        /* Compiler info */
 
@@ -517,14 +469,14 @@ get_runtime_version_info(GString *str, void (*additional_info)(GString *))
                    (_MSC_FULL_VER / 10000000) - 6,
                    (_MSC_FULL_VER / 100000) % 100);
                if ((_MSC_FULL_VER % 100000) != 0)
-                       g_string_sprintfa(str, " patch %d",
+                       g_string_sprintfa(str, " build %d",
                            _MSC_FULL_VER % 100000);
        } else {
                g_string_sprintfa(str, "\n\nBuilt using Microsoft Visual C++ %d.%d",
                    (_MSC_FULL_VER / 1000000) - 6,
                    (_MSC_FULL_VER / 10000) % 100);
                if ((_MSC_FULL_VER % 10000) != 0)
-                       g_string_sprintfa(str, " patch %d",
+                       g_string_sprintfa(str, " build %d",
                            _MSC_FULL_VER % 10000);
        }
        g_string_sprintfa(str, "\n");
@@ -550,7 +502,7 @@ const char *
 get_copyright_info(void)
 {
        return
-"Copyright 1998-2006 Gerald Combs <gerald@wireshark.org> and contributors.\n"
+"Copyright 1998-2007 Gerald Combs <gerald@wireshark.org> and contributors.\n"
 "This is free software; see the source for copying conditions. There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n";
 }