Commit Graph

408 Commits

Author SHA1 Message Date
Guy Harris 1b37f4c5ef Cmake: check for popcount, and build it from wsutil/popcount.c if missing.
Change-Id: Id646a9f0b1fc6acafa99a78725e3f0ec8a48c170
Reviewed-on: https://code.wireshark.org/review/6006
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-12-23 05:04:17 +00:00
Stephen Fisher 4009231b2c Try to fix Windows build for popcount() unresolved external symbol
Change-Id: Ie154caa1967ce4016dd52eefcf757e2e58d7ac68
Reviewed-on: https://code.wireshark.org/review/6005
Reviewed-by: Stephen Fisher <sfisher@sdf.org>
2014-12-23 00:45:08 +00:00
Stephen Fisher 3d62d2c396 Move popcount() to an optionally built part of wsutil for systems that
provide their own popcount().

Change-Id: Ic26f3b50cf0bd2b4af0d42e9c27488ebbac1ab33
Reviewed-on: https://code.wireshark.org/review/5998
Petri-Dish: Stephen Fisher <sfisher@sdf.org>
Reviewed-by: Stephen Fisher <sfisher@sdf.org>
2014-12-23 00:22:23 +00:00
Alexis La Goutte 5248c0df21 Fix unknown command tag name [-Wdocumentation-unknown-command]
Change-Id: I6c2564a86e13d9321001856ba1f51681a9f20976
Reviewed-on: https://code.wireshark.org/review/5979
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-12-22 15:24:28 +00:00
Guy Harris 4d3c7b50de Don't bother with __builtin_floorl().
At least as I read the GCC documentation, if GCC supports a builtin
floorl() at all, it will always treat floorl() and
__builtin_floorl() the same (it's reserved in C90 and defined in C99, so
nobody should ever write C code assuming floorl() won't be treated in
that afshion).

In addition, the GCC 3.3.6 manual says nothing about __builtin_floorl(),
so it probably won't help to use it.  If it appears to help, there's
probably something else going on.

Also, GCC appears not to like "#ifdef (__GNUC__)", as the parentheses
mean it's testing an expression, not a macro name.

Change-Id: Ib88b52c366d7f3b1637bb408fb18d04b67c27e4b
Reviewed-on: https://code.wireshark.org/review/5909
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-12-20 05:09:52 +00:00
Guy Harris 1a051afee3 Include <math.h> to declare floor().
Change-Id: I39de31c3e38b83aaec76396048e6960f609bc63e
Reviewed-on: https://code.wireshark.org/review/5907
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-12-20 04:24:05 +00:00
Guy Harris 07fb8cf54a Remove trailing white space.
Change-Id: I0777945a5234cf380e2f3bc2461cc638c316f499
Reviewed-on: https://code.wireshark.org/review/5906
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-12-20 04:11:43 +00:00
Guy Harris b445b3da44 Rename wsutil/floor.[ch] to wsutil/floorl.[ch].
That better indicates what they do - they don't supply floor(), as
that's a standard math.h feature dating back before C89, they supply
floorl().

Change-Id: Ib1278c51cdfc57680c28c51de87eafb2cb50c8eb
Reviewed-on: https://code.wireshark.org/review/5905
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-12-20 03:44:34 +00:00
Guy Harris 1088629503 If we don't have GCC, fall back on using floor().
Add the closing brace for the function body while we're at it.

Change-Id: I73170fdc0885972dce531b553ff8601cceea182e
Reviewed-on: https://code.wireshark.org/review/5902
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-12-20 03:00:21 +00:00
Guy Harris b736896490 Handle floorl() the same way we handle other not-on-all-platforms functions.
Use AC_CHECK_FUNC() for it, define FLOORL_LO to floorl.lo if we *don't*
have it, add FLOORL_LO to the list of items conditionally built in
libwsutil, and include "wsutil/floor.h" only if HAVE_FLOORL is *not*
defined, as that means it's *not* supplied by the platform and thus
*not* declared in <math.h>.

Also, use the standard export stuff in wsutil/floor.h.

Change-Id: Ic24aa69f65f2d15450d8b84b0c2b0c58f38edebe
Reviewed-on: https://code.wireshark.org/review/5901
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-12-20 02:54:04 +00:00
Guy Harris 556f9a5b2b Include floor.c and floor.h in the source tarball.
Change-Id: Iabc0403643a05eaa7dbd525a94bc720d100d54d5
Reviewed-on: https://code.wireshark.org/review/5899
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-12-20 02:02:30 +00:00
Stephen Fisher 2376953909 Another missing change
Change-Id: Icaaaeda75f411ecc7cf3027440c8af2b85021be3
Reviewed-on: https://code.wireshark.org/review/5897
Reviewed-by: Stephen Fisher <sfisher@sdf.org>
2014-12-20 00:45:37 +00:00
Stephen Fisher aa0a04054c Add missing files from last commit
Change-Id: I4a6dd1b60893d19b91f5bc0f85be9ee99cd3eb5e
Reviewed-on: https://code.wireshark.org/review/5892
Reviewed-by: Stephen Fisher <sfisher@sdf.org>
2014-12-19 23:12:34 +00:00
Stephen Fisher 47dc4e77cc Revert "Provide a floorl() function (which is currently only able to call GCC's __builtin_floorl() function) for systems which don't provide one." because I left off the new wsutil/floor.[ch] files
This reverts commit e2586ec36d.

Change-Id: Ie38b7f32b2d21e3beba5173eec22ca12b7f5da91
Reviewed-on: https://code.wireshark.org/review/5891
Reviewed-by: Stephen Fisher <sfisher@sdf.org>
2014-12-19 23:12:09 +00:00
Stephen Fisher e2586ec36d Provide a floorl() function (which is currently only able to call GCC's
__builtin_floorl() function) for systems which don't provide one.

Change-Id: Ie0140ff195f0eae525c7bd70c7c3e23039fde569
Reviewed-on: https://code.wireshark.org/review/5889
Reviewed-by: Stephen Fisher <sfisher@sdf.org>
2014-12-19 22:56:18 +00:00
Stephen Fisher d77c5a5106 Update the URL for the CPUID instruction documentation.
Change-Id: I9729b3aa11027783a3557468743e91e180a6de8d
Reviewed-on: https://code.wireshark.org/review/5509
Reviewed-by: Stephen Fisher <sfisher@sdf.org>
2014-11-26 17:30:58 +00:00
Bill Meier cb090e81ec [pedantic] Replace usage of 'long' and 'long long'
Change-Id: I78fc82c1a83eb04d78a11fc76710c92dfc916208
Reviewed-on: https://code.wireshark.org/review/5395
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-11-19 16:31:42 +00:00
Pascal Quantin 85aa1bcc75 ws_mempbrk_sse42.c: remove inclusion of stdint.h as it's no more required after g79e4da4
Change-Id: I48776a286ba1d412ecda55857938d9daa77fd3f7
Reviewed-on: https://code.wireshark.org/review/5136
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
2014-11-05 12:38:06 +00:00
Stephen Fisher 79e4da4d63 Fix compilation error on FreeBSD 10.0-RELEASE (with clang): change int8_t to
gint.

Change-Id: I7974497a8f50e5d18ec74aa7554f058056a6022c
Reviewed-on: https://code.wireshark.org/review/5115
Petri-Dish: Stephen Fisher <stephenfisher@centurylink.net>
Reviewed-by: Stephen Fisher <stephenfisher@centurylink.net>
2014-11-04 20:02:34 +00:00
Guy Harris 7a787927a5 Don't use -msse4.2 with MSVC.
Change-Id: I457d45d9ad05e0eb851e78a7342e666ef9df8ffd
Reviewed-on: https://code.wireshark.org/review/5086
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-11-03 16:39:54 +00:00
Pascal Quantin c49c775087 Add identification of Windows (Server) 10
Change-Id: I5ab7a4dc67ceac644faead0d9e460e3babaf6355
Reviewed-on: https://code.wireshark.org/review/5067
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
2014-11-02 13:33:52 +00:00
Stig Bjørlykke 6a37368738 Validate no_of_bits in ws_sign_ext32 and ws_sign_ext64
The result of the '<<' expression is undefined if no_of_bits - 1 is negative.

Change-Id: I3fff09afe414bdd9d6736ee351f1c542c503b93d
Reviewed-on: https://code.wireshark.org/review/4698
Reviewed-by: Evan Huus <eapache@gmail.com>
Petri-Dish: Evan Huus <eapache@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
2014-11-01 15:51:41 +00:00
Jeff Morriss 79c977cf0a Remove the optional strncasecmp.{h,c} target (for systems that don't have that API).
strncasecmp() has been prohibited for years (in favor of the g_ascii_ version).

Change-Id: I64b7c29099b1c5240757e2026fe3490096a84755
Reviewed-on: https://code.wireshark.org/review/4980
Petri-Dish: Anders Broman <a.broman58@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Jeff Morriss <jeff.morriss.ws@gmail.com>
2014-10-30 13:39:44 +00:00
Guy Harris 4acf4955f5 Rename the strnatcmp.c routines and make them use the g_ascii_XXX() routines.
Rename strnatcmp()/strnatcasecmp() to ws_ascii_XXX(), and make them use
the g_ascii_XXX() routines rather than ctype.h routines, to eliminate
locale-dependent behavior.

(If you want locale-dependent "natural order" sorting, you probably want
"dictionary order" sorting, which is more complicated than just natural
order sorting.)

Change-Id: I837f2776b2a909b547dc9a6072e497911b5380e5
Reviewed-on: https://code.wireshark.org/review/4985
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-10-29 17:54:51 +00:00
Guy Harris 344c2bbb5e strptime.c needs ctype.h.
Change-Id: Icf4020426d3a5e0a6bd2012a266cf07be9928abf
Reviewed-on: https://code.wireshark.org/review/4793
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-10-17 21:59:45 +00:00
Guy Harris e304f6d9f8 Get rid of unnecessary includes of ctype.h.
Change-Id: Ic23203f13fd6627b664e8ed1438d328c46328b9f
Reviewed-on: https://code.wireshark.org/review/4790
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-10-17 21:22:58 +00:00
Guy Harris 5fc398c328 Don't use ctype.h routines.
That avoids locale dependency and handles possibly-signed chars (which
we weren't doing before).

Change-Id: I189222eff624ad2d2e960bc0b69f3f22d35f351f
Reviewed-on: https://code.wireshark.org/review/4787
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-10-17 21:11:44 +00:00
Guy Harris 441698863d Eliminate include of <ctype.h>.
This is not built if we have glibc (as we already have getopt() from
it), and it's not part of glibc, so....

Change-Id: Iae4ff944c78fc55a8cd2eaf523a3696c47b741d7
Reviewed-on: https://code.wireshark.org/review/4769
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-10-17 07:02:37 +00:00
Bill Meier 10b83e6931 Add editor-modelines; adjust whitespace.
Change-Id: I8cad872cee972a6d22a72852dac57fd188daca84
Reviewed-on: https://code.wireshark.org/review/4683
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-10-14 16:45:09 +00:00
Pascal Quantin b3ad51db7c Follow-up of ged0b19b (Make boolean bitmask type 64-bit wide)
- use G_GINT64_MODIFIER instead of "%ll"
- use G_GUINT64_CONSTANT instead of ULL
- add some missing explicit casts

Change-Id: Ic048d9ee8966ea504ea542cefe55688edcfb2dc7
Reviewed-on: https://code.wireshark.org/review/4644
Reviewed-by: Pascal Quantin <pascal.quantin@gmail.com>
Petri-Dish: Pascal Quantin <pascal.quantin@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-10-13 15:34:09 +00:00
Daniel Mack ed0b19b94b Make boolean bitmask type 64-bit wide
There are protocols out there that have 64-bit wide bit mask fields, so
make the internal representation and bitfield decoders 64-bit aware.

For this, the ws_ctz() fallback and bits_count_ones() have to be tweaked
slightly.

Change-Id: I19237b954a69c9e6c55864f281993c1e8731a233
Reviewed-on: https://code.wireshark.org/review/4158
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-10-12 14:15:12 +00:00
Gerald Combs 3a4cab751e CMake: Bundle our libraries.
Change-Id: I5df4d794602f7e53c2f4f496597f8eaf7c7b6eaa
Reviewed-on: https://code.wireshark.org/review/4588
Reviewed-by: Gerald Combs <gerald@wireshark.org>
2014-10-10 01:45:55 +00:00
Bill Meier 07698d536b Adjust some whitespace to match editor modelines.
Change-Id: Ia22cac3ebd7a454c156f98d967e6fd61f708a2b3
Reviewed-on: https://code.wireshark.org/review/4489
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-10-06 02:55:49 +00:00
Gerald Combs 983ae6cade Fix the patch-bzip2 target.
The main site URI scheme is now https. Update the URL in some other
places while we're here.

Change-Id: Ib03d4fd1c58dabd3cf5050dc4f79216e0b94d525
Reviewed-on: https://code.wireshark.org/review/4133
Reviewed-by: Gerald Combs <gerald@wireshark.org>
2014-09-16 20:16:26 +00:00
Jeff Morriss 2497482e34 Don't print non-printable characters in AX.25 addresses.
Add a new routine to wsutil to make this easy: printable_char_or_period().

Bug: 10439
Change-Id: I0eb2bb6bc0676a1035c3d845b5e20276fa04de60
Reviewed-on: https://code.wireshark.org/review/3981
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-09-04 12:46:06 +00:00
Guy Harris 2e67941b4c Use the <wsutil/ws_diag_control.h> stuff to disable -Wdeprecated-declarations.
Change-Id: I4b1fcbf5b25f2515d45015c9e1c4a94d6cfbc79c
Reviewed-on: https://code.wireshark.org/review/3883
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-27 21:57:30 +00:00
Guy Harris d04ec412d6 Use FreeRADIUS's warning pragma controls to suppress Apple complaints.
Apple would really rather that you use their Shiny Happy Frameworks
rather than those crufty old cross-platform APIs.  We are a
cross-platform program, and will use platform-specific APIs only if
there's enough benefit to doing so - and, in this case, that means
"using the platform-specific APIs on OS X and the other APIs on other
platforms", so that's two code paths to maintain, so "enough benefit"
has to outweigh the issues with that.

Change-Id: I370ba469a6f5892143d72179d15c9fe22d664fdf
Reviewed-on: https://code.wireshark.org/review/3881
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-27 21:17:37 +00:00
Guy Harris cda5c16667 Clean up capinfos output.
Make sure there's always a space between a number and "[TGMK]bytes",
"[TGMK]bits", and "[TGMK]packets".

Change-Id: I710385303e451e9aea6fc9bbea562f59ca0d22c9
Reviewed-on: https://code.wireshark.org/review/3810
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-24 08:57:13 +00:00
Graham Bloice 97546165fa Modify includes of config.h so that out-of-tree builds, i.e. CMake
don't pick up the in-tree copy.

Change-Id: I7ec473876cdba1a025c52362d7f6adc62d24ce71
Reviewed-on: https://code.wireshark.org/review/3798
Petri-Dish: Graham Bloice <graham.bloice@trihedral.com>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Roland Knall <rknall@gmail.com>
Reviewed-by: Graham Bloice <graham.bloice@trihedral.com>
2014-08-24 08:04:08 +00:00
Bill Meier 0c38cf3c7b plugins.c: cleanup plugins_scan_dir()
add_plugin() no longer returns ENOMEM. Remove code in
 plugins_scan_dir() which printed an error message
 if ENOMEM returned by add_plugin().

 Fix comment re add_plugin() return values.

Change-Id: Id5170c28e2a55884d41ceebc4e07f16389b75a2a
Reviewed-on: https://code.wireshark.org/review/3774
Reviewed-by: Bill Meier <wmeier@newsguy.com>
2014-08-21 23:58:15 +00:00
Roland Knall bed29af46d Extcap Capture Interface
Extcap is a plugin interface, which allows for the usage
 of external capture interfaces via pipes using a predefined
 configuration language which results in a graphical gui.

 This implementation seeks for a generic implementation,
 which results in a seamless integration with the current
 system, and does add all external interfaces as simple
 interfaces.

 Windows Note: Due to limitations with GTK and Windows,
 a gspawn-winXX-helper.exe, respective gspawn-winXX-helper-console.exe
 is needed, which is part of any GTK windows installation.

 The default installation directory from the build is an extcap
 subdirectory underneath the run directory. The folder used by
 extcap may be viewed in the folders tab of the about dialog.

 The default installation directory for extcap plugins with
 a pre-build or installer version of wireshark is the extcap
 subdirectory underneath the main wireshark directory.

 For more information see:

  http://youtu.be/Nn84T506SwU
  bug #9009

 Also take a look in doc/extcap_example.py for a Python-example
 and in extcap.pod for the arguments grammer.

 Todo:
   - Integrate with Qt - currently no GUI is generated, but
     the interfaces are still usable

Change-Id: I4f1239b2f1ebd8b2969f73af137915f5be1ce50f
Signed-off-by: Mike Ryan <mikeryan+wireshark@lacklustre.net>
Signed-off-by: Mike Kershaw <dragorn@kismetwireless.net>
Signed-off-by: Roland Knall <rknall@gmail.com>
Reviewed-on: https://code.wireshark.org/review/359
Petri-Dish: Michael Mann <mmann78@netscape.net>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Michael Mann <mmann78@netscape.net>
2014-08-21 03:34:02 +00:00
Guy Harris 479e2881f8 The "MPEG-2" CRC-32 is also the ATM CRC-32.
Use it in the ATM dissector, and use a tvbuff version, so that we don't
do tvb_get_ptr() ourselves.

Change-Id: I0bd3594bc739e0cca447ac06f34a471441cf2e70
Reviewed-on: https://code.wireshark.org/review/3513
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-08 19:52:08 +00:00
Guy Harris cf5f0d3827 Fix the polynomial for the CCITT CRC.
And note that it's the same polynomial for the MPEG-2 CRC.

Change-Id: Ie89e392156ae77a2adeec3eb8e704aa75c0cd0dc
Reviewed-on: https://code.wireshark.org/review/3512
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-08 19:21:12 +00:00
Guy Harris 6f104a0ffb Clean up the CRC-10 code.
Have the wsutil routine just accumulate the stuff from the buffer handed
to us.  Have the IUUP dissector deal with the extra stuff.  Add a
update_crc10_by_bytes_tvb() routine, which is passed a tvbuff, offset,
and length, and use that rather than using tvb_get_ptr() in dissectors.

Change-Id: Iadd0823c764080e60d1339abb94d2e19150eabfe
Reviewed-on: https://code.wireshark.org/review/3509
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-08 18:09:02 +00:00
Guy Harris 9b9005eb94 The DRM DCP CRC-16 is the same as the X.25 CRC-16.
So just use crc16_x25_ccitt_tvb(), which goes a byte at a time rather
than a bit at a time, and which takes a tvbuff rather than requiring you
to call tvb_get_ptr().

It also doesn't 1's-complement the result, so we can compare it against the
0x1D0F in ETSI TS 102 821 V1.4.1 (2012-10) rather than against a
1's-complement version, 0xE2F0.

Change-Id: Ia513f851f0a8ff1e7853278ddf3618c532fb2aba
Reviewed-on: https://code.wireshark.org/review/3507
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-08 17:11:03 +00:00
Guy Harris 22ad90cdc8 Add routines for CRC-16 with a polynomial of 0x3D65.
There are routines that take a buffer and a length and that take a
tvbuff, offset, and length; use those routines in the DNP dissector
(which no longer needs its own table and loop), and use the tvbuff
routine instead of calling tvb_get_ptr().

Change-Id: Ic67b0f3b65b94ea47c0fdc2f3d3b6f88df77f9c6
Reviewed-on: https://code.wireshark.org/review/3505
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-08 15:58:06 +00:00
Guy Harris ad4d672976 Add a CRC32_ACCUMULATE() macro for a single CRC-32 step and use it.
Change-Id: I9462d45c5db6d54c0ee695046cb72be1acf379e8
Reviewed-on: https://code.wireshark.org/review/3497
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-08 08:06:11 +00:00
Guy Harris 74312299f2 Fix indentation.
Change-Id: I4342ec7723c43f8e12d6187609a1493a61725d31
Reviewed-on: https://code.wireshark.org/review/3492
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-08 07:19:36 +00:00
Guy Harris 0734ac385f Rename buffer_ routines to ws_buffer_ to avoid name collisions.
In particular, epan/wslua/lrexlib.c has its own buffer_ routines,
causing some linker warnings on some platforms, as reported in bug
10332.

(Not to be backported to 1.12, as that would change the API and ABI of
libwsutil and libwiretap.  We should also make the buffer_ routines in
epan/wslua/lrexlib.c static, which should also address this problem, but
the name change avoids other potential namespace collisions.)

Change-Id: I1d42c7d1778c7e4c019deb2608d476c52001ce28
Reviewed-on: https://code.wireshark.org/review/3351
Reviewed-by: Guy Harris <guy@alum.mit.edu>
2014-08-02 11:01:29 +00:00
Jeff Morriss edb7a91105 Make the nameres test suite work out of tree by looking for the global hosts
file in the build directory (rather than the source directory).

Change-Id: I365e573ee84e9a41aa76f4aa9a4a6efaf42fb60e
Reviewed-on: https://code.wireshark.org/review/3334
Reviewed-by: Evan Huus <eapache@gmail.com>
2014-08-02 01:00:08 +00:00