summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/.deps/MySock.Po426
-rw-r--r--src/.deps/XDraw.Po415
-rw-r--r--src/.deps/dwgo.Po521
-rw-r--r--src/.deps/errors.Po391
-rw-r--r--src/.deps/localtemp.Po434
-rw-r--r--src/Makefile451
-rw-r--r--src/Makefile.am12
-rw-r--r--src/Makefile.in465
-rw-r--r--src/MySock.cpp396
-rw-r--r--src/MySock.h62
-rw-r--r--src/XDraw.cpp424
-rw-r--r--src/XDraw.h75
-rw-r--r--src/config.h107
-rw-r--r--src/config.h.in109
-rw-r--r--src/dwgo.cpp1031
-rw-r--r--src/dwgo.h24
-rw-r--r--src/errors.cpp128
-rw-r--r--src/errors.h30
-rw-r--r--src/localtemp.cpp359
-rw-r--r--src/localtemp.h57
-rw-r--r--src/stamp-h11
-rw-r--r--src/strutils.cpp136
22 files changed, 6054 insertions, 0 deletions
diff --git a/src/.deps/MySock.Po b/src/.deps/MySock.Po
new file mode 100644
index 0000000..7f91711
--- /dev/null
+++ b/src/.deps/MySock.Po
@@ -0,0 +1,426 @@
+MySock.o MySock.o: MySock.cpp MySock.h /usr/include/stdio.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
+ /usr/include/gnu/stubs-32.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h \
+ /usr/include/bits/types.h /usr/include/bits/typesizes.h \
+ /usr/include/libio.h /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+ /usr/include/string.h /usr/include/xlocale.h /usr/include/strings.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale \
+ /usr/include/locale.h /usr/include/bits/locale.h \
+ /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
+ /usr/include/libintl.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/sched.h /usr/include/time.h /usr/include/bits/sched.h \
+ /usr/include/bits/time.h /usr/include/signal.h \
+ /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h \
+ /usr/include/bits/setjmp.h /usr/include/unistd.h \
+ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
+ /usr/include/bits/confname.h /usr/include/getopt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype \
+ /usr/include/ctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime \
+ /usr/include/bits/wchar.h /usr/include/stdint.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib \
+ /usr/include/stdlib.h /usr/include/bits/waitflags.h \
+ /usr/include/bits/waitstatus.h /usr/include/sys/types.h \
+ /usr/include/sys/select.h /usr/include/bits/select.h \
+ /usr/include/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype \
+ /usr/include/wctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc \
+ /usr/include/sys/socket.h /usr/include/sys/uio.h \
+ /usr/include/bits/uio.h /usr/include/bits/socket.h \
+ /usr/include/bits/sockaddr.h /usr/include/asm/socket.h \
+ /usr/include/asm/sockios.h /usr/include/netinet/in.h \
+ /usr/include/bits/in.h /usr/include/bits/byteswap.h \
+ /usr/include/netdb.h /usr/include/rpc/netdb.h \
+ /usr/include/bits/siginfo.h /usr/include/bits/netdb.h
+
+MySock.h:
+
+/usr/include/stdio.h:
+
+/usr/include/features.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/strings.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/bits/locale.h:
+
+/usr/include/langinfo.h:
+
+/usr/include/nl_types.h:
+
+/usr/include/iconv.h:
+
+/usr/include/libintl.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/endian.h:
+
+/usr/include/bits/endian.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/bits/sched.h:
+
+/usr/include/bits/time.h:
+
+/usr/include/signal.h:
+
+/usr/include/bits/sigset.h:
+
+/usr/include/bits/pthreadtypes.h:
+
+/usr/include/bits/setjmp.h:
+
+/usr/include/unistd.h:
+
+/usr/include/bits/posix_opt.h:
+
+/usr/include/bits/environments.h:
+
+/usr/include/bits/confname.h:
+
+/usr/include/getopt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype:
+
+/usr/include/ctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime:
+
+/usr/include/bits/wchar.h:
+
+/usr/include/stdint.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/include/bits/xopen_lim.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib:
+
+/usr/include/stdlib.h:
+
+/usr/include/bits/waitflags.h:
+
+/usr/include/bits/waitstatus.h:
+
+/usr/include/sys/types.h:
+
+/usr/include/sys/select.h:
+
+/usr/include/bits/select.h:
+
+/usr/include/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc:
+
+/usr/include/sys/socket.h:
+
+/usr/include/sys/uio.h:
+
+/usr/include/bits/uio.h:
+
+/usr/include/bits/socket.h:
+
+/usr/include/bits/sockaddr.h:
+
+/usr/include/asm/socket.h:
+
+/usr/include/asm/sockios.h:
+
+/usr/include/netinet/in.h:
+
+/usr/include/bits/in.h:
+
+/usr/include/bits/byteswap.h:
+
+/usr/include/netdb.h:
+
+/usr/include/rpc/netdb.h:
+
+/usr/include/bits/siginfo.h:
+
+/usr/include/bits/netdb.h:
diff --git a/src/.deps/XDraw.Po b/src/.deps/XDraw.Po
new file mode 100644
index 0000000..78f5d05
--- /dev/null
+++ b/src/.deps/XDraw.Po
@@ -0,0 +1,415 @@
+XDraw.o XDraw.o: XDraw.cpp /usr/include/X11/Xlib.h \
+ /usr/include/sys/types.h /usr/include/features.h \
+ /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h \
+ /usr/include/gnu/stubs.h /usr/include/gnu/stubs-32.h \
+ /usr/include/bits/types.h /usr/include/bits/typesizes.h \
+ /usr/include/time.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h \
+ /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/sys/select.h /usr/include/bits/select.h \
+ /usr/include/bits/sigset.h /usr/include/bits/time.h \
+ /usr/include/sys/sysmacros.h /usr/include/bits/pthreadtypes.h \
+ /usr/include/X11/X.h /usr/include/X11/Xfuncproto.h \
+ /usr/include/X11/Xosdefs.h /usr/include/X11/xpm.h \
+ /usr/include/X11/Xutil.h /usr/include/X11/keysym.h \
+ /usr/include/X11/keysymdef.h /usr/include/X11/extensions/shape.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef \
+ /usr/include/string.h /usr/include/xlocale.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio \
+ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
+ /usr/include/wchar.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale \
+ /usr/include/locale.h /usr/include/bits/locale.h \
+ /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
+ /usr/include/libintl.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \
+ /usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
+ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
+ /usr/include/bits/confname.h /usr/include/getopt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype \
+ /usr/include/ctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime \
+ /usr/include/bits/wchar.h /usr/include/stdint.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib \
+ /usr/include/stdlib.h /usr/include/bits/waitflags.h \
+ /usr/include/bits/waitstatus.h /usr/include/alloca.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype \
+ /usr/include/wctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc \
+ XDraw.h errors.h
+
+/usr/include/X11/Xlib.h:
+
+/usr/include/sys/types.h:
+
+/usr/include/features.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/time.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h:
+
+/usr/include/endian.h:
+
+/usr/include/bits/endian.h:
+
+/usr/include/sys/select.h:
+
+/usr/include/bits/select.h:
+
+/usr/include/bits/sigset.h:
+
+/usr/include/bits/time.h:
+
+/usr/include/sys/sysmacros.h:
+
+/usr/include/bits/pthreadtypes.h:
+
+/usr/include/X11/X.h:
+
+/usr/include/X11/Xfuncproto.h:
+
+/usr/include/X11/Xosdefs.h:
+
+/usr/include/X11/xpm.h:
+
+/usr/include/X11/Xutil.h:
+
+/usr/include/X11/keysym.h:
+
+/usr/include/X11/keysymdef.h:
+
+/usr/include/X11/extensions/shape.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/bits/locale.h:
+
+/usr/include/langinfo.h:
+
+/usr/include/nl_types.h:
+
+/usr/include/iconv.h:
+
+/usr/include/libintl.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/bits/sched.h:
+
+/usr/include/signal.h:
+
+/usr/include/bits/setjmp.h:
+
+/usr/include/unistd.h:
+
+/usr/include/bits/posix_opt.h:
+
+/usr/include/bits/environments.h:
+
+/usr/include/bits/confname.h:
+
+/usr/include/getopt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype:
+
+/usr/include/ctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime:
+
+/usr/include/bits/wchar.h:
+
+/usr/include/stdint.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/include/bits/xopen_lim.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib:
+
+/usr/include/stdlib.h:
+
+/usr/include/bits/waitflags.h:
+
+/usr/include/bits/waitstatus.h:
+
+/usr/include/alloca.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc:
+
+XDraw.h:
+
+errors.h:
diff --git a/src/.deps/dwgo.Po b/src/.deps/dwgo.Po
new file mode 100644
index 0000000..941e3dd
--- /dev/null
+++ b/src/.deps/dwgo.Po
@@ -0,0 +1,521 @@
+dwgo.o dwgo.o: dwgo.cpp \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
+ /usr/include/gnu/stubs-32.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h \
+ /usr/include/string.h /usr/include/xlocale.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio \
+ /usr/include/stdio.h /usr/include/bits/types.h \
+ /usr/include/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale \
+ /usr/include/locale.h /usr/include/bits/locale.h \
+ /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
+ /usr/include/libintl.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/sched.h /usr/include/time.h /usr/include/bits/sched.h \
+ /usr/include/bits/time.h /usr/include/signal.h \
+ /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h \
+ /usr/include/bits/setjmp.h /usr/include/unistd.h \
+ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
+ /usr/include/bits/confname.h /usr/include/getopt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype \
+ /usr/include/ctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime \
+ /usr/include/bits/wchar.h /usr/include/stdint.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib \
+ /usr/include/stdlib.h /usr/include/bits/waitflags.h \
+ /usr/include/bits/waitstatus.h /usr/include/sys/types.h \
+ /usr/include/sys/select.h /usr/include/bits/select.h \
+ /usr/include/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype \
+ /usr/include/wctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/fstream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/basic_file.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/fstream.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/vector \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_vector.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_bvector.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/vector.tcc \
+ /usr/include/strings.h /usr/include/X11/Xlib.h /usr/include/X11/X.h \
+ /usr/include/X11/Xfuncproto.h /usr/include/X11/Xosdefs.h \
+ /usr/include/X11/xpm.h /usr/include/X11/Xutil.h \
+ /usr/include/X11/keysym.h /usr/include/X11/keysymdef.h \
+ /usr/include/errno.h /usr/include/bits/errno.h \
+ /usr/include/linux/errno.h /usr/include/asm/errno.h \
+ /usr/include/asm-generic/errno.h /usr/include/asm-generic/errno-base.h \
+ /usr/include/pwd.h /usr/include/sys/wait.h /usr/include/bits/signum.h \
+ /usr/include/bits/siginfo.h /usr/include/bits/sigaction.h \
+ /usr/include/bits/sigcontext.h /usr/include/asm/sigcontext.h \
+ /usr/include/asm/types.h /usr/include/asm-generic/int-ll64.h \
+ /usr/include/bits/sigstack.h /usr/include/sys/ucontext.h \
+ /usr/include/bits/sigthread.h /usr/include/sys/resource.h \
+ /usr/include/bits/resource.h /usr/include/math.h \
+ /usr/include/bits/huge_val.h /usr/include/bits/huge_valf.h \
+ /usr/include/bits/huge_vall.h /usr/include/bits/inf.h \
+ /usr/include/bits/nan.h /usr/include/bits/mathdef.h \
+ /usr/include/bits/mathcalls.h /usr/include/X11/XKBlib.h \
+ /usr/include/X11/extensions/XKBstr.h /usr/include/X11/extensions/XKB.h \
+ XDraw.h errors.h localtemp.h dwgo.h strutils.cpp config.h
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio:
+
+/usr/include/stdio.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/bits/locale.h:
+
+/usr/include/langinfo.h:
+
+/usr/include/nl_types.h:
+
+/usr/include/iconv.h:
+
+/usr/include/libintl.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/endian.h:
+
+/usr/include/bits/endian.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/bits/sched.h:
+
+/usr/include/bits/time.h:
+
+/usr/include/signal.h:
+
+/usr/include/bits/sigset.h:
+
+/usr/include/bits/pthreadtypes.h:
+
+/usr/include/bits/setjmp.h:
+
+/usr/include/unistd.h:
+
+/usr/include/bits/posix_opt.h:
+
+/usr/include/bits/environments.h:
+
+/usr/include/bits/confname.h:
+
+/usr/include/getopt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype:
+
+/usr/include/ctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime:
+
+/usr/include/bits/wchar.h:
+
+/usr/include/stdint.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/include/bits/xopen_lim.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib:
+
+/usr/include/stdlib.h:
+
+/usr/include/bits/waitflags.h:
+
+/usr/include/bits/waitstatus.h:
+
+/usr/include/sys/types.h:
+
+/usr/include/sys/select.h:
+
+/usr/include/bits/select.h:
+
+/usr/include/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/fstream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/basic_file.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/fstream.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/vector:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_vector.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_bvector.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/vector.tcc:
+
+/usr/include/strings.h:
+
+/usr/include/X11/Xlib.h:
+
+/usr/include/X11/X.h:
+
+/usr/include/X11/Xfuncproto.h:
+
+/usr/include/X11/Xosdefs.h:
+
+/usr/include/X11/xpm.h:
+
+/usr/include/X11/Xutil.h:
+
+/usr/include/X11/keysym.h:
+
+/usr/include/X11/keysymdef.h:
+
+/usr/include/errno.h:
+
+/usr/include/bits/errno.h:
+
+/usr/include/linux/errno.h:
+
+/usr/include/asm/errno.h:
+
+/usr/include/asm-generic/errno.h:
+
+/usr/include/asm-generic/errno-base.h:
+
+/usr/include/pwd.h:
+
+/usr/include/sys/wait.h:
+
+/usr/include/bits/signum.h:
+
+/usr/include/bits/siginfo.h:
+
+/usr/include/bits/sigaction.h:
+
+/usr/include/bits/sigcontext.h:
+
+/usr/include/asm/sigcontext.h:
+
+/usr/include/asm/types.h:
+
+/usr/include/asm-generic/int-ll64.h:
+
+/usr/include/bits/sigstack.h:
+
+/usr/include/sys/ucontext.h:
+
+/usr/include/bits/sigthread.h:
+
+/usr/include/sys/resource.h:
+
+/usr/include/bits/resource.h:
+
+/usr/include/math.h:
+
+/usr/include/bits/huge_val.h:
+
+/usr/include/bits/huge_valf.h:
+
+/usr/include/bits/huge_vall.h:
+
+/usr/include/bits/inf.h:
+
+/usr/include/bits/nan.h:
+
+/usr/include/bits/mathdef.h:
+
+/usr/include/bits/mathcalls.h:
+
+/usr/include/X11/XKBlib.h:
+
+/usr/include/X11/extensions/XKBstr.h:
+
+/usr/include/X11/extensions/XKB.h:
+
+XDraw.h:
+
+errors.h:
+
+localtemp.h:
+
+dwgo.h:
+
+strutils.cpp:
+
+config.h:
diff --git a/src/.deps/errors.Po b/src/.deps/errors.Po
new file mode 100644
index 0000000..dc362c2
--- /dev/null
+++ b/src/.deps/errors.Po
@@ -0,0 +1,391 @@
+errors.o errors.o: errors.cpp \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
+ /usr/include/gnu/stubs-32.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h \
+ /usr/include/string.h /usr/include/xlocale.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio \
+ /usr/include/stdio.h /usr/include/bits/types.h \
+ /usr/include/bits/typesizes.h /usr/include/libio.h \
+ /usr/include/_G_config.h /usr/include/wchar.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h \
+ /usr/include/bits/stdio_lim.h /usr/include/bits/sys_errlist.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale \
+ /usr/include/locale.h /usr/include/bits/locale.h \
+ /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
+ /usr/include/libintl.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/endian.h /usr/include/bits/endian.h \
+ /usr/include/sched.h /usr/include/time.h /usr/include/bits/sched.h \
+ /usr/include/bits/time.h /usr/include/signal.h \
+ /usr/include/bits/sigset.h /usr/include/bits/pthreadtypes.h \
+ /usr/include/bits/setjmp.h /usr/include/unistd.h \
+ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
+ /usr/include/bits/confname.h /usr/include/getopt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype \
+ /usr/include/ctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime \
+ /usr/include/bits/wchar.h /usr/include/stdint.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib \
+ /usr/include/stdlib.h /usr/include/bits/waitflags.h \
+ /usr/include/bits/waitstatus.h /usr/include/sys/types.h \
+ /usr/include/sys/select.h /usr/include/bits/select.h \
+ /usr/include/sys/sysmacros.h /usr/include/alloca.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype \
+ /usr/include/wctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc \
+ errors.h
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h:
+
+/usr/include/features.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h:
+
+/usr/include/string.h:
+
+/usr/include/xlocale.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio:
+
+/usr/include/stdio.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/bits/locale.h:
+
+/usr/include/langinfo.h:
+
+/usr/include/nl_types.h:
+
+/usr/include/iconv.h:
+
+/usr/include/libintl.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/endian.h:
+
+/usr/include/bits/endian.h:
+
+/usr/include/sched.h:
+
+/usr/include/time.h:
+
+/usr/include/bits/sched.h:
+
+/usr/include/bits/time.h:
+
+/usr/include/signal.h:
+
+/usr/include/bits/sigset.h:
+
+/usr/include/bits/pthreadtypes.h:
+
+/usr/include/bits/setjmp.h:
+
+/usr/include/unistd.h:
+
+/usr/include/bits/posix_opt.h:
+
+/usr/include/bits/environments.h:
+
+/usr/include/bits/confname.h:
+
+/usr/include/getopt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype:
+
+/usr/include/ctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime:
+
+/usr/include/bits/wchar.h:
+
+/usr/include/stdint.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/include/bits/xopen_lim.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib:
+
+/usr/include/stdlib.h:
+
+/usr/include/bits/waitflags.h:
+
+/usr/include/bits/waitstatus.h:
+
+/usr/include/sys/types.h:
+
+/usr/include/sys/select.h:
+
+/usr/include/bits/select.h:
+
+/usr/include/sys/sysmacros.h:
+
+/usr/include/alloca.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc:
+
+errors.h:
diff --git a/src/.deps/localtemp.Po b/src/.deps/localtemp.Po
new file mode 100644
index 0000000..08d3392
--- /dev/null
+++ b/src/.deps/localtemp.Po
@@ -0,0 +1,434 @@
+localtemp.o localtemp.o: localtemp.cpp localtemp.h /usr/include/string.h \
+ /usr/include/features.h /usr/include/sys/cdefs.h \
+ /usr/include/bits/wordsize.h /usr/include/gnu/stubs.h \
+ /usr/include/gnu/stubs-32.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h \
+ /usr/include/xlocale.h /usr/include/strings.h errors.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h \
+ /usr/include/limits.h /usr/include/bits/posix1_lim.h \
+ /usr/include/bits/local_lim.h /usr/include/linux/limits.h \
+ /usr/include/bits/posix2_lim.h /usr/include/bits/xopen_lim.h \
+ /usr/include/bits/stdio_lim.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib \
+ /usr/include/stdlib.h /usr/include/bits/waitflags.h \
+ /usr/include/bits/waitstatus.h /usr/include/endian.h \
+ /usr/include/bits/endian.h /usr/include/sys/types.h \
+ /usr/include/bits/types.h /usr/include/bits/typesizes.h \
+ /usr/include/time.h /usr/include/sys/select.h \
+ /usr/include/bits/select.h /usr/include/bits/sigset.h \
+ /usr/include/bits/time.h /usr/include/sys/sysmacros.h \
+ /usr/include/bits/pthreadtypes.h /usr/include/alloca.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio \
+ /usr/include/stdio.h /usr/include/libio.h /usr/include/_G_config.h \
+ /usr/include/wchar.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h \
+ /usr/include/bits/sys_errlist.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale \
+ /usr/include/locale.h /usr/include/bits/locale.h \
+ /usr/include/langinfo.h /usr/include/nl_types.h /usr/include/iconv.h \
+ /usr/include/libintl.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h \
+ /usr/include/pthread.h /usr/include/sched.h /usr/include/bits/sched.h \
+ /usr/include/signal.h /usr/include/bits/setjmp.h /usr/include/unistd.h \
+ /usr/include/bits/posix_opt.h /usr/include/bits/environments.h \
+ /usr/include/bits/confname.h /usr/include/getopt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype \
+ /usr/include/ctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime \
+ /usr/include/bits/wchar.h /usr/include/stdint.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc \
+ MySock.h /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype \
+ /usr/include/wctype.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream \
+ /usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc \
+ /usr/include/sys/socket.h /usr/include/sys/uio.h \
+ /usr/include/bits/uio.h /usr/include/bits/socket.h \
+ /usr/include/bits/sockaddr.h /usr/include/asm/socket.h \
+ /usr/include/asm/sockios.h /usr/include/netinet/in.h \
+ /usr/include/bits/in.h /usr/include/bits/byteswap.h \
+ /usr/include/netdb.h /usr/include/rpc/netdb.h \
+ /usr/include/bits/siginfo.h /usr/include/bits/netdb.h dwgo.h
+
+localtemp.h:
+
+/usr/include/string.h:
+
+/usr/include/features.h:
+
+/usr/include/sys/cdefs.h:
+
+/usr/include/bits/wordsize.h:
+
+/usr/include/gnu/stubs.h:
+
+/usr/include/gnu/stubs-32.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stddef.h:
+
+/usr/include/xlocale.h:
+
+/usr/include/strings.h:
+
+errors.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/string:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++config.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/os_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/cpu_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stringfwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/char_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstring:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstddef:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algobase.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/climits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/limits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/syslimits.h:
+
+/usr/include/limits.h:
+
+/usr/include/bits/posix1_lim.h:
+
+/usr/include/bits/local_lim.h:
+
+/usr/include/linux/limits.h:
+
+/usr/include/bits/posix2_lim.h:
+
+/usr/include/bits/xopen_lim.h:
+
+/usr/include/bits/stdio_lim.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdlib:
+
+/usr/include/stdlib.h:
+
+/usr/include/bits/waitflags.h:
+
+/usr/include/bits/waitstatus.h:
+
+/usr/include/endian.h:
+
+/usr/include/bits/endian.h:
+
+/usr/include/sys/types.h:
+
+/usr/include/bits/types.h:
+
+/usr/include/bits/typesizes.h:
+
+/usr/include/time.h:
+
+/usr/include/sys/select.h:
+
+/usr/include/bits/select.h:
+
+/usr/include/bits/sigset.h:
+
+/usr/include/bits/time.h:
+
+/usr/include/sys/sysmacros.h:
+
+/usr/include/bits/pthreadtypes.h:
+
+/usr/include/alloca.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iosfwd:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++locale.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdio:
+
+/usr/include/stdio.h:
+
+/usr/include/libio.h:
+
+/usr/include/_G_config.h:
+
+/usr/include/wchar.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/stdarg.h:
+
+/usr/include/bits/sys_errlist.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/clocale:
+
+/usr/include/locale.h:
+
+/usr/include/bits/locale.h:
+
+/usr/include/langinfo.h:
+
+/usr/include/nl_types.h:
+
+/usr/include/iconv.h:
+
+/usr/include/libintl.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cstdarg:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++io.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/gthr-default.h:
+
+/usr/include/pthread.h:
+
+/usr/include/sched.h:
+
+/usr/include/bits/sched.h:
+
+/usr/include/signal.h:
+
+/usr/include/bits/setjmp.h:
+
+/usr/include/unistd.h:
+
+/usr/include/bits/posix_opt.h:
+
+/usr/include/bits/environments.h:
+
+/usr/include/bits/confname.h:
+
+/usr/include/getopt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cctype:
+
+/usr/include/ctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/postypes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwchar:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ctime:
+
+/usr/include/bits/wchar.h:
+
+/usr/include/stdint.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/functexcept.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception_defines.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_pair.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/cpp_type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/type_traits.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/utility:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_relops.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_types.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator_base_funcs.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/concept_check.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/debug/debug.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/memory:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/c++allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/new_allocator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/new:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/exception:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_construct.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_uninitialized.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_raw_storage_iter.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/limits:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream_insert.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_function.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ext/atomicity.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/atomic_word.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/algorithm:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_algo.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_heap.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/stl_tempbuf.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_string.tcc:
+
+MySock.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/iostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ostream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/ios:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/localefwd.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ios_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_classes.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/streambuf:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/streambuf_iterator.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/cwctype:
+
+/usr/include/wctype.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_base.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/ctype_inline.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/codecvt.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/time_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/i686-pc-linux-gnu/bits/messages_members.h:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/basic_ios.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/ostream.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/locale:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/locale_facets.tcc:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/typeinfo:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/istream:
+
+/usr/lib/gcc/i686-pc-linux-gnu/4.2.3/include/g++-v4/bits/istream.tcc:
+
+/usr/include/sys/socket.h:
+
+/usr/include/sys/uio.h:
+
+/usr/include/bits/uio.h:
+
+/usr/include/bits/socket.h:
+
+/usr/include/bits/sockaddr.h:
+
+/usr/include/asm/socket.h:
+
+/usr/include/asm/sockios.h:
+
+/usr/include/netinet/in.h:
+
+/usr/include/bits/in.h:
+
+/usr/include/bits/byteswap.h:
+
+/usr/include/netdb.h:
+
+/usr/include/rpc/netdb.h:
+
+/usr/include/bits/siginfo.h:
+
+/usr/include/bits/netdb.h:
+
+dwgo.h:
diff --git a/src/Makefile b/src/Makefile
new file mode 100644
index 0000000..5f0e57c
--- /dev/null
+++ b/src/Makefile
@@ -0,0 +1,451 @@
+# Makefile.in generated by automake 1.10.1 from Makefile.am.
+# src/Makefile. Generated from Makefile.in by configure.
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+
+
+
+pkgdatadir = $(datadir)/DWGO
+pkglibdir = $(libdir)/DWGO
+pkgincludedir = $(includedir)/DWGO
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+bin_PROGRAMS = dwgo$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/config.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_dwgo_OBJECTS = dwgo.$(OBJEXT) MySock.$(OBJEXT) XDraw.$(OBJEXT) \
+ localtemp.$(OBJEXT) errors.$(OBJEXT)
+dwgo_OBJECTS = $(am_dwgo_OBJECTS)
+dwgo_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I.
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(dwgo_SOURCES)
+DIST_SOURCES = $(dwgo_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = ${SHELL} /home/gaspy/proyectos/Dwgo-0.3d/missing --run aclocal-1.10
+AMTAR = ${SHELL} /home/gaspy/proyectos/Dwgo-0.3d/missing --run tar
+AUTOCONF = ${SHELL} /home/gaspy/proyectos/Dwgo-0.3d/missing --run autoconf
+AUTOHEADER = ${SHELL} /home/gaspy/proyectos/Dwgo-0.3d/missing --run autoheader
+AUTOMAKE = ${SHELL} /home/gaspy/proyectos/Dwgo-0.3d/missing --run automake-1.10
+AWK = gawk
+CC = gcc
+CCDEPMODE = depmode=gcc3
+CFLAGS = -g -O2
+CPP = gcc -E
+CPPFLAGS =
+CXX = g++
+CXXDEPMODE = depmode=gcc3
+CXXFLAGS = -g -O2
+CYGPATH_W = echo
+DEFS = -DHAVE_CONFIG_H
+DEPDIR = .deps
+ECHO_C =
+ECHO_N = -n
+ECHO_T =
+EGREP = /bin/grep -E
+EXEEXT =
+GREP = /bin/grep
+INSTALL = /usr/bin/install -c
+INSTALL_DATA = ${INSTALL} -m 644
+INSTALL_PROGRAM = ${INSTALL}
+INSTALL_SCRIPT = ${INSTALL}
+INSTALL_STRIP_PROGRAM = $(install_sh) -c -s
+LDFLAGS =
+LIBOBJS =
+LIBS = -lpthread -lXpm -lXext
+LTLIBOBJS =
+MAKEINFO = ${SHELL} /home/gaspy/proyectos/Dwgo-0.3d/missing --run makeinfo
+MKDIR_P = /bin/mkdir -p
+OBJEXT = o
+PACKAGE = DWGO
+PACKAGE_BUGREPORT =
+PACKAGE_NAME =
+PACKAGE_STRING =
+PACKAGE_TARNAME =
+PACKAGE_VERSION =
+PATH_SEPARATOR = :
+SET_MAKE =
+SHELL = /bin/sh
+STRIP =
+VERSION = 0.3
+XMKMF =
+abs_builddir = /home/gaspy/proyectos/Dwgo-0.3d/src
+abs_srcdir = /home/gaspy/proyectos/Dwgo-0.3d/src
+abs_top_builddir = /home/gaspy/proyectos/Dwgo-0.3d
+abs_top_srcdir = /home/gaspy/proyectos/Dwgo-0.3d
+ac_ct_CC = gcc
+ac_ct_CXX = g++
+am__include = include
+am__leading_dot = .
+am__quote =
+am__tar = ${AMTAR} chof - "$$tardir"
+am__untar = ${AMTAR} xf -
+bindir = ${exec_prefix}/bin
+build_alias =
+builddir = .
+datadir = /usr/local/share
+datarootdir = ${prefix}/share
+docdir = ${datarootdir}/doc/${PACKAGE}
+dvidir = ${docdir}
+exec_prefix = ${prefix}
+host_alias =
+htmldir = ${docdir}
+includedir = ${prefix}/include
+infodir = ${datarootdir}/info
+install_sh = $(SHELL) /home/gaspy/proyectos/Dwgo-0.3d/install-sh
+libdir = ${exec_prefix}/lib
+libexecdir = ${exec_prefix}/libexec
+localedir = ${datarootdir}/locale
+localstatedir = ${prefix}/var
+mandir = ${datarootdir}/man
+mkdir_p = /bin/mkdir -p
+oldincludedir = /usr/include
+pdfdir = ${docdir}
+prefix = /usr/local
+program_transform_name = s,x,x,
+psdir = ${docdir}
+sbindir = ${exec_prefix}/sbin
+sharedstatedir = ${prefix}/com
+srcdir = .
+sysconfdir = ${prefix}/etc
+target_alias =
+top_build_prefix = ../
+top_builddir = ..
+top_srcdir = ..
+dwgo_SOURCES = dwgo.cpp \
+ dwgo.h \
+ MySock.cpp \
+ MySock.h \
+ XDraw.cpp \
+ XDraw.h \
+ localtemp.cpp \
+ localtemp.h \
+ errors.cpp \
+ errors.h
+
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status src/config.h
+$(srcdir)/config.h.in: $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+dwgo$(EXEEXT): $(dwgo_OBJECTS) $(dwgo_DEPENDENCIES)
+ @rm -f dwgo$(EXEEXT)
+ $(CXXLINK) $(dwgo_OBJECTS) $(dwgo_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+include ./$(DEPDIR)/MySock.Po
+include ./$(DEPDIR)/XDraw.Po
+include ./$(DEPDIR)/dwgo.Po
+include ./$(DEPDIR)/errors.Po
+include ./$(DEPDIR)/localtemp.Po
+
+.cpp.o:
+ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+# source='$<' object='$@' libtool=no \
+# DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) \
+# $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonemtpy = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) config.h
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic ctags distclean distclean-compile \
+ distclean-generic distclean-hdr distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-binPROGRAMS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644
index 0000000..2332552
--- /dev/null
+++ b/src/Makefile.am
@@ -0,0 +1,12 @@
+bin_PROGRAMS = dwgo
+
+dwgo_SOURCES = dwgo.cpp \
+ dwgo.h \
+ MySock.cpp \
+ MySock.h \
+ XDraw.cpp \
+ XDraw.h \
+ localtemp.cpp \
+ localtemp.h \
+ errors.cpp \
+ errors.h
diff --git a/src/Makefile.in b/src/Makefile.in
new file mode 100644
index 0000000..33d9091
--- /dev/null
+++ b/src/Makefile.in
@@ -0,0 +1,465 @@
+# Makefile.in generated by automake 1.10.3 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
+# Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+bin_PROGRAMS = dwgo$(EXEEXT)
+subdir = src
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/config.h.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/configure.in
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = config.h
+CONFIG_CLEAN_FILES =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_dwgo_OBJECTS = dwgo.$(OBJEXT) MySock.$(OBJEXT) XDraw.$(OBJEXT) \
+ localtemp.$(OBJEXT) errors.$(OBJEXT)
+dwgo_OBJECTS = $(am_dwgo_OBJECTS)
+dwgo_LDADD = $(LDADD)
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/depcomp
+am__depfiles_maybe = depfiles
+CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
+CXXLD = $(CXX)
+CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \
+ -o $@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
+SOURCES = $(dwgo_SOURCES)
+DIST_SOURCES = $(dwgo_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_URL = @PACKAGE_URL@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+XMKMF = @XMKMF@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build_alias = @build_alias@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = @docdir@
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host_alias = @host_alias@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dwgo_SOURCES = dwgo.cpp \
+ dwgo.h \
+ MySock.cpp \
+ MySock.h \
+ XDraw.cpp \
+ XDraw.h \
+ localtemp.cpp \
+ localtemp.h \
+ errors.cpp \
+ errors.h
+
+all: config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.SUFFIXES:
+.SUFFIXES: .cpp .o .obj
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+ && { if test -f $@; then exit 0; else break; fi; }; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu src/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+ @rm -f stamp-h1
+ cd $(top_builddir) && $(SHELL) ./config.status src/config.h
+$(srcdir)/config.h.in: $(am__configure_deps)
+ cd $(top_srcdir) && $(AUTOHEADER)
+ rm -f stamp-h1
+ touch $@
+
+distclean-hdr:
+ -rm -f config.h stamp-h1
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
+dwgo$(EXEEXT): $(dwgo_OBJECTS) $(dwgo_DEPENDENCIES)
+ @rm -f dwgo$(EXEEXT)
+ $(CXXLINK) $(dwgo_OBJECTS) $(dwgo_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/MySock.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/XDraw.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dwgo.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/errors.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/localtemp.Po@am__quote@
+
+.cpp.o:
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
+
+.cpp.obj:
+@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCXX_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+
+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+ done | \
+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
+ END { if (nonempty) { for (i in files) print i; }; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+ list='$(DISTFILES)'; \
+ dist_files=`for file in $$list; do echo $$file; done | \
+ sed -e "s|^$$srcdirstrip/||;t" \
+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+ case $$dist_files in \
+ */*) $(MKDIR_P) `echo "$$dist_files" | \
+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+ sort -u` ;; \
+ esac; \
+ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ if test -d $$d/$$file; then \
+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile $(PROGRAMS) config.h
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-binPROGRAMS clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+html-am:
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-dvi-am:
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-html-am:
+
+install-info: install-info-am
+
+install-info-am:
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-pdf-am:
+
+install-ps: install-ps-am
+
+install-ps-am:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
+ clean-generic ctags distclean distclean-compile \
+ distclean-generic distclean-hdr distclean-tags distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+ install-binPROGRAMS install-data install-data-am install-dvi \
+ install-dvi-am install-exec install-exec-am install-html \
+ install-html-am install-info install-info-am install-man \
+ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+ tags uninstall uninstall-am uninstall-binPROGRAMS
+
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/src/MySock.cpp b/src/MySock.cpp
new file mode 100644
index 0000000..f74f7fd
--- /dev/null
+++ b/src/MySock.cpp
@@ -0,0 +1,396 @@
+ /*******************************************************************************
+ * File: MySock.cpp *
+ * Version: 0.2 *
+ * Date: 20081002 *
+ * Author: Gaspar Fernández (helyo@totaki.com) *
+ * *
+ * Copyright (C) 2008 Gaspar Fernández *
+ * *
+ * This program is free software: you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation, either version 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
+ * *
+ ********************************************************************************
+ * Description:
+ * Class and functions to create socket connections and fetch information
+ * from http servers. It is part of another project I'm in. (Some comments are
+ * in Spanish.
+ *
+ * Change History:
+ * Date Author Modification
+ * 10.02.2008 Gaspar Fernández Initial release
+ * 31.10.2010 Gaspar Fernández Bug Corrections
+ ********************************************************************************/
+#include "MySock.h"
+
+/*************************************************************
+ * Function: extract_key_value *
+ *************************************************************
+ * Description: *
+ * Extract information separated with a white space. *
+ * We consider KEY before the whitespace and VALUE *
+ * after that. *
+ * *
+ * Input: *
+ * string str - String containing the relation *
+ * *
+ * Output: *
+ * TKey_Value struct containing separated key and value. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+TKey_Value extract_key_value(string str)
+{
+ TKey_Value data;
+ char buf[512]; // Max characters
+ try // Sólo si es posible
+ {
+ sscanf(str.data(), "%s", buf); // Extract header
+ data.value=str.substr(strlen(buf));
+ data.key=buf;
+ }
+ catch(exception& e)
+ {
+ // Do nothing
+ }
+ return data;
+}
+
+/*************************************************************
+ * Constructor MySock() *
+ *************************************************************
+ * Description: *
+ * Creates MySock class and initialize it. The second *
+ * constructor uses an HTTP URI to read information stored *
+ * there. *
+ * *
+ * Input: *
+ * string uri (in the second one) *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+MySock::MySock()
+{
+ this->error=NO_ERROR;
+ this->connected=false;
+}
+
+MySock::MySock(string uri)
+{
+ int port;
+ string host;
+ string params;
+ string protostr;
+ string req;
+ this->error=NO_ERROR;
+
+ string::size_type pos = uri.find("//", 0);
+ string::size_type pos2;
+
+ if ((pos!=string::npos) && (pos==uri.find("/", 0)) && (pos>0)) // Sin barras antes
+ {
+ protostr = uri.substr(0,(pos-1));
+ if (protostr=="http")
+ {
+ port=80;
+ pos2=uri.find("/", (pos+2));
+ if (pos2==string::npos)
+ pos2=uri.length();
+ host=uri.substr(pos+2, pos2-pos-2);
+ params=uri.substr(pos2);
+
+ this->MakeConnection(host, port);
+ req="GET "+params+" HTTP/1.0"+CRLF+
+ "Host: "+host+"\r\n"+
+ CRLF;
+ if (this->connected)
+ this->SendData(req);
+ }
+ else
+ {
+ this->error=NO_VALID_PROTOCOL;
+ }
+ }
+ else
+ this->error=NO_VALID_PROTOCOL;
+}
+
+/*************************************************************
+ * Constructor MySock() *
+ *************************************************************
+ * Description: *
+ * Creates MySock class and initialize it. Connect with *
+ * a remote server using specified port. *
+ * *
+ * Input: *
+ * string server - Server to connect to *
+ * int port - Port in the remote server *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+MySock::MySock(string server, int port)
+{
+ this->MakeConnection(server, port);
+}
+
+/*************************************************************
+ * Method: MakeConnection() *
+ *************************************************************
+ * Description: *
+ * Makes a connection to an specified server using a *
+ * remote port *
+ * *
+ * Input: *
+ * string server *
+ * int port *
+ * *
+ * Output: *
+ * Nothing *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void MySock::MakeConnection(string server, int port)
+{
+ struct sockaddr_in serverAddress;
+ struct hostent *hostInfo;
+ this->connected=false;
+ this->error=NO_ERROR;
+ hostInfo = gethostbyname(server.data());
+ this->error=(hostInfo==NULL)?CANT_RESOLVE_HOST:NO_ERROR;
+ if (this->error==0)
+ {
+ this->sockd = socket(AF_INET, SOCK_STREAM, 0);
+ this->error = (this->sockd<0)?CANT_CREATE_SOCKET:NO_ERROR;
+ }
+
+ // Connect to server. First we have to set some fields in the
+ // serverAddress structure. The system will assign me an arbitrary
+ // local port that is not in use.
+ if (this->error==0)
+ {
+ serverAddress.sin_family = hostInfo->h_addrtype;
+ memcpy((char *) &serverAddress.sin_addr.s_addr,
+ hostInfo->h_addr_list[0], hostInfo->h_length);
+ serverAddress.sin_port = htons(port);
+
+ this->error= (connect(this->sockd,
+ (struct sockaddr *) &serverAddress,
+ sizeof(serverAddress)) < 0)?CANT_CONNECT:NO_ERROR;
+ }
+ this->connected=(error==NO_ERROR);
+}
+
+/*************************************************************
+ * Method: SendData() *
+ *************************************************************
+ * Description: *
+ * Sends information through the already stablished *
+ * connection. *
+ * *
+ * Input: *
+ * string data - Data being sent *
+ * *
+ * Output: *
+ * Nothing *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+int MySock::SendData(string data)
+{
+ if (this->error==0)
+ this->error = (write(this->sockd,data.data(),strlen(data.data()))<0)?CANT_SEND_DATA:NO_ERROR;
+ return this->error;
+}
+
+/*************************************************************
+ * Method: GetTextData() *
+ *************************************************************
+ * Description: *
+ * Read received data *
+ * *
+ * Input: *
+ * Nothing *
+ * *
+ * Output: *
+ * string - returns data received. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+string MySock::GetTextData()
+{
+ int n;
+ char buffer[1024];
+ string out("");
+
+ if (this->error==0)
+ {
+
+ bzero(buffer,1024);
+ while ((n=read(this->sockd,buffer,1023)>0))
+ {
+ if (n>=0)
+ out+=buffer;
+ else
+ {
+ error=CANT_READ_DATA;
+ break;
+ }
+ bzero(buffer,1024);
+ }
+ return out;
+ }
+ return NULL;
+}
+
+
+/*************************************************************
+ * Method: GetHTTPData() *
+ *************************************************************
+ * Description: *
+ * We connect to an HTTP server and We Want to Read and *
+ * identify headers and contents. We use this function *
+ * *
+ * Input: *
+ * Nothing *
+ * *
+ * Output: *
+ * HTTP_Request structure - Returns headers and data *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+HTTP_Request *MySock::GetHTTPData()
+{
+ string txtData;
+ int i=0; // Cuenta líneas
+ string::size_type pos, pos2;
+ HTTP_Request *http;
+ string header;
+ string value;
+ bool err, data;
+ char buf[255], buf2[255];
+ TKey_Value hdata;
+
+ if (this->error==NO_ERROR)
+ {
+ txtData=this->GetTextData();
+ // Close the socket, we will analyze data
+ this->closeConnection();
+
+ data=false;
+ err=false;
+ pos=0;
+ http=new HTTP_Request;
+ while ((!data) && (!err))
+ {
+ pos2=txtData.find("\r\n",pos);
+ if (pos2==string::npos)
+ err=true;
+ else if (pos2==pos)
+ data=true;
+ else
+ {
+ header=txtData.substr(pos,pos2-pos);
+// cout<<header<<"*"<<endl;
+ if (i==0)
+ {
+ http->statusstr=header;
+ sscanf(header.data(),"%s %s", buf, buf2); // HTTP/1.0 200
+ http->status=atoi(buf2);
+ }
+ else
+ {
+ hdata=extract_key_value(header);
+ if (hdata.key=="Date:")
+ http->date=hdata.value;
+ else if (hdata.key=="Server: ")
+ http->server=hdata.value;
+ else if (hdata.key=="Last-Modified")
+ http->last_modified=hdata.value;
+ else if (hdata.key=="Content-Type")
+ http->content_type=hdata.value;
+ else if (hdata.key=="Content-Length")
+ http->content_length=hdata.value;
+ }
+ pos=pos2+2;
+ i++;
+ }
+
+ }
+ if (err)
+ {
+ this->error=NO_VALID_HEADERS;
+ return NULL;
+ }
+ else
+ http->data=txtData.substr(pos2+2); // Skip \r\n
+
+ return http;
+ }
+ return NULL;
+}
+
+void MySock::closeConnection()
+{
+ if (connected)
+ {
+ close(sockd);
+ connected=false;
+ }
+}
+
+MySock::~MySock()
+{
+ closeConnection();
+}
+// It is a test function to use MySock class. It was written for DWGO
+// int main(int argc, char *argv[])
+// {
+
+// string servidor;
+// MySock sock;
+// int portno;
+// HTTP_Request *http;
+
+// if (argc < 3) {
+// fprintf(stderr,"usage %s hostname port\n", argv[0]);
+// exit(0);
+// }
+// portno = atoi(argv[2]);
+// servidor=argv[1];
+// // sock = MySock(servidor, portno);
+// // sock.SendData("GET /pub/data/observations/metar/decoded/LEMG.TXT HTTP/1.0\n\n");
+
+// // cout<<sock.GetTextData();
+
+// sock = MySock("http://weather.noaa.gov/pub/data/observations/metar/decoded/LEMG.TXT");
+// // cout<<"Error: "<<sock.error;
+// http=sock.GetHTTPData();
+// if (http==NULL)
+// cout<<"HUBO UN FALLO";
+// else
+// cout<<"Stado: "<<http->status<<"Fecha: "<<http->date<<endl<<"DATA:"<<http->data;
+// return 0;
+// }
diff --git a/src/MySock.h b/src/MySock.h
new file mode 100644
index 0000000..132978c
--- /dev/null
+++ b/src/MySock.h
@@ -0,0 +1,62 @@
+#include <stdio.h>
+#include <string.h>
+#include <strings.h>
+#include <iostream>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <netdb.h>
+
+using namespace std;
+#define MAX_LINE 100
+#define LINE_ARRAY_SIZE (MAX_LINE+1)
+
+#define NO_ERROR 0
+#define CANT_CREATE_SOCKET 20
+#define CANT_RESOLVE_HOST 30
+#define CANT_CONNECT 35
+#define CANT_SEND_DATA 40
+#define CANT_READ_DATA 45
+#define NO_VALID_PROTOCOL 50
+#define NO_VALID_HEADERS 52
+
+#define CRLF "\r\n"
+struct HTTP_Request
+{
+ string statusstr;
+ int status;
+ string date;
+ string server;
+ string last_modified;
+ string content_type;
+ string content_length;
+ string data;
+};
+
+struct TKey_Value
+{
+ string key, value;
+};
+
+class MySock {
+public:
+ int error;
+ bool connected;
+
+ string GetTextData();
+ int SendData(string data);
+ HTTP_Request *GetHTTPData();
+ void closeConnection();
+ MySock();
+ MySock(string server, int port);
+ MySock(string uri);
+ virtual ~MySock();
+private:
+ int sockd, puerto;
+ struct hostent *server;
+
+ void MakeConnection (string server, int port);
+};
+
+TKey_Value extract_key_value(string str);
diff --git a/src/XDraw.cpp b/src/XDraw.cpp
new file mode 100644
index 0000000..2f966f8
--- /dev/null
+++ b/src/XDraw.cpp
@@ -0,0 +1,424 @@
+ /********************************************************************************
+ * File: XDraw.cpp *
+ * Date: 20080805 *
+ * Author: Gaspar Fernández (helyo@totaki.com) *
+ * *
+ * Copyright (C) 2008 Gaspar Fernández *
+ * *
+ * This program is free software: you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation, either version 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
+ * *
+ ********************************************************************************
+ * Description:
+ * It containt functions to display XPM images using Xlib. Also we can
+ * render text and make some drawing in colors.
+ * Based in Xpm.cc by Per Linden (included in Temperature.app 1.4) released
+ * under GNU GPL v2 (or later) license.
+ *
+ * Change History:
+ * Date Author Modification
+ *
+ ********************************************************************************/
+
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+#include <X11/extensions/shape.h>
+#include <iostream>
+#include <stdlib.h>
+#include <string>
+#include "XDraw.h"
+#include "errors.h"
+
+using namespace std;
+
+
+/*************************************************************
+ * Constructor XDraw *
+ *************************************************************
+ * Description: *
+ * Load a background image into a Window shown in a *
+ * Display *
+ * *
+ * Input: *
+ * Display* disp - Current display *
+ * Window root - Root Window where to draw *
+ * const char data* - XPM Image data *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+XDraw::XDraw(Display* disp, Window root, const char* data)
+
+{
+ xDisplay = disp;
+ defaultWin = root;
+
+ load_bkgrnd(data);
+}
+
+/*************************************************************
+ * Method: load_bkgrnd() *
+ *************************************************************
+ * Description: *
+ * Load Xpm data as a background image. *
+ * *
+ * Input: *
+ * const char* data - XPM image data *
+ * *
+ * Output: *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void XDraw::load_bkgrnd(const char* data)
+{
+ int error;
+
+ Attributes.valuemask = 0;
+ error = XpmCreatePixmapFromBuffer(xDisplay, defaultWin, (char *) data, &Image, &Mask, &Attributes);
+ if (error!=XpmSuccess)
+ error_handler(ERR_XPMERROR,NULL);
+}
+
+/*************************************************************
+ * Destructor ~XDraw *
+ *************************************************************
+ * Description: *
+ * Frees memory *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+XDraw::~XDraw()
+{
+ xpmfree();
+}
+
+/*************************************************************
+ * Method xpmfree() *
+ *************************************************************
+ * Description: *
+ * Frees Memory *
+ * *
+ * Input: *
+ * Nothing *
+ * *
+ * Output: *
+ * Nothing *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void XDraw::xpmfree()
+{
+ if (Image) {
+ XFreePixmap(xDisplay, Image);
+ }
+
+ if (Mask) {
+ XFreePixmap(xDisplay, Mask);
+ }
+}
+
+/*************************************************************
+ * Method: replace_background() *
+ *************************************************************
+ * Description: *
+ * Replaces background image data in the current window *
+ * *
+ * Input: *
+ * const char* bkg_data - New XPM image to replace actual *
+ * background data *
+ * *
+ * Output: *
+ * Nothing *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void XDraw::replace_background(const char* bkg_data)
+{
+ xpmfree(); // Free image and mask
+ load_bkgrnd(bkg_data);
+}
+
+/*************************************************************
+ * Function: setWindowPixmap(), setWindowPixmapShaped(), *
+ * setwpxmap() *
+ *************************************************************
+ * Description: *
+ * Renders the image into the Window *
+ * We can do this with the default window, or with *
+ * another one. *
+ * *
+ * Input: *
+ * Window win - Window to render the image *
+ * bool shaped - Wether we have to apply mask or not. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void XDraw::setWindowPixmap(Window win)
+{
+ setwpxmap(win, false);
+}
+
+void XDraw::setWindowPixmap()
+{
+ setwpxmap(defaultWin, false);
+}
+
+void XDraw::setwpxmap(Window win, bool shaped) // SetWindowPixmap
+{
+ XResizeWindow(xDisplay, win, Attributes.width, Attributes.height);
+ XSetWindowBackgroundPixmap(xDisplay, win, Image);
+ if (shaped)
+ XShapeCombineMask(xDisplay, win, ShapeBounding, 0, 0, Mask, ShapeSet);
+ XClearWindow(xDisplay, win);
+}
+
+void XDraw::setWindowPixmapShaped(Window win)
+{
+ setwpxmap(win, true);
+}
+
+void XDraw::setWindowPixmapShaped()
+{
+ setwpxmap(defaultWin, true);
+}
+
+/*************************************************************
+ * Function: setDefaultWindow *
+ *************************************************************
+ * Description: *
+ * Replaces default window with another one. *
+ * *
+ * Input: *
+ * Window win - The new default window to work with. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void XDraw::setDefaultWindow(Window win)
+{
+ defaultWin = win;
+}
+
+/*************************************************************
+ * Function: Sync, doxsync *
+ *************************************************************
+ * Description: *
+ * XSync the Window *
+ * *
+ * Input: *
+ * Window win - The Window *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void XDraw::Sync(Window win)
+{
+ doxsync(win);
+}
+
+void XDraw::Sync()
+{
+ doxsync(defaultWin);
+}
+
+void XDraw::doxsync(Window win)
+{
+ XClearWindow(xDisplay, win);
+ XSync(xDisplay, win);
+}
+
+/*************************************************************
+ * Method: DrawRect *
+ *************************************************************
+ * Description: *
+ * Draws a filled rectangle *
+ * *
+ * Input: *
+ * int x, int y - X, Y positions *
+ * unsigned int w, unsigned int h - Width and Height *
+ * XDrawColor color - Color of the filled rectangle *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void XDraw::DrawRect(int x, int y, unsigned int w, unsigned int h, XDrawColor color)
+{
+ GC gc;
+ XGCValues gcv;
+
+ gcv.foreground=setColor(color);
+ gc = XCreateGC(xDisplay, Image, GCForeground, &gcv);
+
+ XFillRectangle(xDisplay, Image, gc, x,y,w,h);
+}
+
+/*************************************************************
+ * Function: setColor *
+ *************************************************************
+ * Description: *
+ * Gets unsigned long value, from rgb data. It can be *
+ * extracted from individual ints or from a XDrawColor *
+ * structure *
+ * *
+ * Input: *
+ * int red, int gree, int blue (rgb data) *
+ * or XDrawColor color (rgb data within a XDrawColor *
+ * structure) *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+unsigned long XDraw::setColor(XDrawColor color)
+{
+ unsigned long ret_color;
+ int r, g, b;
+ r = (int)((256-color.r) * 255) & 0xff;
+ g = (int)((256-color.g) * 255) & 0xff;
+ b = (int)((256-color.b) * 255) & 0xff;
+
+ ret_color = (r<<16)+(g<<8)+b;
+ return ret_color;
+}
+
+unsigned long XDraw::setColor(int red, int green, int blue)
+{
+ unsigned long ret_color;
+ int r, g, b;
+ r = (int)((256-red) * 255) & 0xff;
+ g = (int)((256-green) * 255) & 0xff;
+ b = (int)((256-blue) * 255) & 0xff;
+
+ ret_color = (r<<16)+(g<<8)+b;
+ return ret_color;
+}
+
+/*************************************************************
+ * Function: drawString *
+ *************************************************************
+ * Description: *
+ * Renders text into the Image *
+ * *
+ * Input: *
+ * int x, int y - X, Y position of the text *
+ * (if x==CENTER_TEXT) it will be centered. *
+ * int maxX - max. width in pixels of the text *
+ * XDrawColor color - Color to render the text *
+ * char* font - Font to use *
+ * char* str - Text to render *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void XDraw::drawString(int x, int y, int maxX, XDrawColor color, char* font, char* str)
+{
+ XFontStruct* fontStruct;
+ GC gc;
+ XGCValues gcv;
+ if ((fontStruct = XLoadQueryFont(xDisplay, font)) == 0)
+ error_handler(ERR_BADFONT, font);
+
+
+ gcv.foreground=setColor(color);
+ gc = XCreateGC(xDisplay, Image, GCForeground, &gcv);
+
+ int strLength = strlen(str);
+ int strWidth = XTextWidth(fontStruct, str, strLength);
+ if (strWidth>maxX)
+ {
+ maxX=maxX-XTextWidth(fontStruct, (char*)"...", 3);
+ strLength--;
+ while (strWidth>maxX)
+ {
+ strLength--;
+ strWidth = XTextWidth(fontStruct, str, strLength);
+ }
+ str[strLength]='\0'; // Cut string
+ strcat(str,"..."); // Add ... at the end
+ strLength=strLength+3;
+ }
+ if (x==CENTER_TEXT)
+ x = (Attributes.width / 2) - (strWidth / 2);
+
+ XSetFont(xDisplay, gc, fontStruct->fid);
+ XDrawString(xDisplay, Image, gc, x, y, str, strLength);
+
+ XFreeGC(xDisplay, gc);
+ XFreeFont(xDisplay, fontStruct);
+}
+
+/*************************************************************
+ * Function: setDrawColor() *
+ *************************************************************
+ * Description: *
+ * Inserts individual rgb data into a XDrawColor *
+ * structure. *
+ * *
+ * Input: *
+ * int r, int g, int b - RGB data *
+ * *
+ * Output: *
+ * XDrawColor structure containing rgb data *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+XDraw::XDrawColor setDrawColor(int r, int g, int b)
+{
+ XDraw::XDrawColor color;
+ color.r=r;
+ color.b=b;
+ color.g=g;
+ return color;
+}
+
+/*************************************************************
+ * Function: testfont *
+ *************************************************************
+ * Description: *
+ * Can we use this font? *
+ * Tests if it is installed on the system and it is *
+ * usable. *
+ * *
+ * Input: *
+ * char* font - Font to test *
+ * Display* disp - Display to use *
+ * *
+ * Output: *
+ * True if we can use it, false if we can't *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+bool testfont(const char *font, Display *disp)
+{
+ XFontStruct* fontstruct;
+ return ((fontstruct = XLoadQueryFont(disp, font)) != 0);
+}
diff --git a/src/XDraw.h b/src/XDraw.h
new file mode 100644
index 0000000..cb4d2e5
--- /dev/null
+++ b/src/XDraw.h
@@ -0,0 +1,75 @@
+//
+// Temperature.app
+//
+// Copyright (c) 2008 Gaspar Fernández
+//
+// This program is free software; you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 2 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+// USA.
+//
+
+// Based in Xpm.h by Per Linden (included in Temperature.app 1.4)
+
+#ifndef _XPM_H_
+#define _XPM_H_
+
+#define CENTER_TEXT -5
+
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+
+class XDraw
+{
+ public:
+ typedef struct
+ {
+ int r,g,b;
+ } XDrawColor;
+
+ XDraw(Display* disp, Window root, const char* data);
+ virtual ~XDraw();
+ void setDefaultWindow(Window win);
+ void setWindowPixmap(Window win);
+ void setWindowPixmap(); /* Default window */
+ void setWindowPixmapShaped(Window win);
+ void setWindowPixmapShaped(); /* Default window */
+ void Sync(Window win);
+ void Sync(); /* Default window */
+
+ void DrawRect(int x, int y, unsigned int w, unsigned int h, XDrawColor color);
+
+ void drawString(int x, int y, int maxX, XDrawColor color, char* font, char* str);
+ void replace_background(const char* bkg_data);
+
+ private:
+ Display* xDisplay;
+ Window defaultWin;
+ XpmAttributes Attributes;
+ Pixmap Image;
+ Pixmap Mask;
+
+ void xpmfree();
+ void setwpxmap(Window win, bool shaped);
+ void load_bkgrnd(const char* data);
+ void doxsync(Window win);
+ unsigned long setColor(XDrawColor color);
+ unsigned long setColor(int red, int green, int blue);
+};
+
+bool testfont(const char *font, Display *disp); /* Can this font be used? */
+XDraw::XDrawColor setDrawColor(int r, int g, int b);
+
+/* Defined outside the class, it may be used before the image is defined */
+
+#endif
diff --git a/src/config.h b/src/config.h
new file mode 100644
index 0000000..e50b2cc
--- /dev/null
+++ b/src/config.h
@@ -0,0 +1,107 @@
+/* src/config.h. Generated from config.h.in by configure. */
+/* src/config.h.in. Generated from configure.in by autoheader. */
+
+/* Location of platform-independent files */
+#define DATADIR "/usr/local/share"
+
+/* Define to 1 if you have the `bzero' function. */
+#define HAVE_BZERO 1
+
+/* Define to 1 if you have the `gethostbyname' function. */
+#define HAVE_GETHOSTBYNAME 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#define HAVE_LIBPTHREAD 1
+
+/* Define to 1 if you have the `Xext' library (-lXext). */
+#define HAVE_LIBXEXT 1
+
+/* Define to 1 if you have the `Xpm' library (-lXpm). */
+#define HAVE_LIBXPM 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `memset' function. */
+#define HAVE_MEMSET 1
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#define HAVE_NETDB_H 1
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#define HAVE_NETINET_IN_H 1
+
+/* Define to 1 if you have the `rint' function. */
+/* #undef HAVE_RINT */
+
+/* Define to 1 if you have the `socket' function. */
+#define HAVE_SOCKET 1
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strstr' function. */
+#define HAVE_STRSTR 1
+
+/* Define to 1 if you have the `strtol' function. */
+#define HAVE_STRTOL 1
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#define HAVE_SYS_SOCKET_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#define HAVE_SYS_TIMEB_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the `tzset' function. */
+#define HAVE_TZSET 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Name of package */
+#define PACKAGE "DWGO"
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT ""
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME ""
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING ""
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME ""
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION ""
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Version number of package */
+#define VERSION "0.3"
diff --git a/src/config.h.in b/src/config.h.in
new file mode 100644
index 0000000..cc4c5c7
--- /dev/null
+++ b/src/config.h.in
@@ -0,0 +1,109 @@
+/* src/config.h.in. Generated from configure.in by autoheader. */
+
+/* Location of platform-independent files */
+#undef DATADIR
+
+/* Define to 1 if you have the `bzero' function. */
+#undef HAVE_BZERO
+
+/* Define to 1 if you have the `gethostbyname' function. */
+#undef HAVE_GETHOSTBYNAME
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#undef HAVE_INTTYPES_H
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#undef HAVE_LIBPTHREAD
+
+/* Define to 1 if you have the `Xext' library (-lXext). */
+#undef HAVE_LIBXEXT
+
+/* Define to 1 if you have the `Xpm' library (-lXpm). */
+#undef HAVE_LIBXPM
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `memset' function. */
+#undef HAVE_MEMSET
+
+/* Define to 1 if you have the <netdb.h> header file. */
+#undef HAVE_NETDB_H
+
+/* Define to 1 if you have the <netinet/in.h> header file. */
+#undef HAVE_NETINET_IN_H
+
+/* Define to 1 if you have the `rint' function. */
+#undef HAVE_RINT
+
+/* Define to 1 if you have the `socket' function. */
+#undef HAVE_SOCKET
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#undef HAVE_STDINT_H
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#undef HAVE_STDLIB_H
+
+/* Define to 1 if you have the `strerror' function. */
+#undef HAVE_STRERROR
+
+/* Define to 1 if you have the <strings.h> header file. */
+#undef HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#undef HAVE_STRING_H
+
+/* Define to 1 if you have the `strstr' function. */
+#undef HAVE_STRSTR
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
+
+/* Define to 1 if you have the <sys/socket.h> header file. */
+#undef HAVE_SYS_SOCKET_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#undef HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/timeb.h> header file. */
+#undef HAVE_SYS_TIMEB_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#undef HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#undef HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the `tzset' function. */
+#undef HAVE_TZSET
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Name of package */
+#undef PACKAGE
+
+/* Define to the address where bug reports for this package should be sent. */
+#undef PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#undef PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#undef PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#undef PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#undef PACKAGE_URL
+
+/* Define to the version of this package. */
+#undef PACKAGE_VERSION
+
+/* Define to 1 if you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Version number of package */
+#undef VERSION
diff --git a/src/dwgo.cpp b/src/dwgo.cpp
new file mode 100644
index 0000000..623273d
--- /dev/null
+++ b/src/dwgo.cpp
@@ -0,0 +1,1031 @@
+ /********************************************************************************
+ * File: wdgo.cpp *
+ * Version: 0.3 *
+ * Date: 20080508 *
+ * Author: Gaspar Fernández (helyo@totaki.com) *
+ * *
+ * Copyright (C) 2008 Gaspar Fernández *
+ * *
+ * This program is free software: you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation, either version 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
+ * *
+ ********************************************************************************
+ * Description:
+ * It is a Window Maker dockapp wich fetches weather information of the
+ * selected cities from National Weather Service (http://weather.noaa.gov/)
+ * to display current temperature and chage background image depending on
+ * the current weather conditions.
+ *
+ * Change History:
+ * Date (D.M.Y) Author Modification
+ * 08.05.2008 Gaspar Fernández Initial release
+ *
+ ********************************************************************************/
+
+#include <iostream>
+#include <fstream>
+#include <vector>
+#include <string.h>
+#include <strings.h>
+#include <pthread.h>
+#include <X11/Xlib.h>
+#include <X11/xpm.h>
+#include <X11/Xutil.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <errno.h>
+#include <pwd.h>
+#include <sys/types.h>
+#include <sys/wait.h>
+#include <math.h>
+#include <time.h>
+#include <X11/XKBlib.h>
+
+#include "XDraw.h"
+#include "errors.h"
+#include "localtemp.h"
+#include "dwgo.h"
+#include "strutils.cpp"
+#include "config.h"
+
+using namespace std;
+
+typedef struct
+{
+ vector <localtemp *> weathers;
+ bool loaded;
+ int refresh; // When timer reaches refresh it reloads the information
+ int counter; // Timer
+} Wth_vector;
+
+typedef struct
+{
+ char station[5]; // Metar ID [ 4 characters + \0
+ char name[16]; // Station name (it's for you). It's short to fit in.
+} T_Station;
+
+typedef struct
+{
+ int x, y, z;
+} T_Point;
+
+typedef struct
+{
+ char *img; // Xpm asociated
+ char *text_font; // Location text font
+ char *temp_font; // Temperature text font
+ char *time_font; // Temperature text font
+ XDraw::XDrawColor text_color; // Text color
+ XDraw::XDrawColor temp_color; // Temperature Color
+ XDraw::XDrawColor time_color; // Temperature Color
+ T_Point stname; // Where to put the station name
+ T_Point sttemp; // Where to put the temperature
+ T_Point sttime; // Where to put the temperature
+} T_Theme;
+
+typedef struct
+{
+ int x1, x2, y1, y2;
+ XDraw::XDrawColor in_color, out_color, bar_color;
+} T_WaitBox;
+
+typedef struct
+{
+ vector <T_Station> stations; // List of preferred stations
+
+ T_Theme metar_themes[TOTAL_THEMES]; // Load themes preferences
+ T_WaitBox wbox; // Wait box
+
+ int update_int; // Update interval
+ char deg_unit; // Celsius or Fahrenheit
+} DwgoConf;
+
+/*************************************************************
+ * Function: fetchWeatherInfo *
+ *************************************************************
+ * Description: *
+ * Fetch weather information from the server. It *
+ * downloads a file for every location in our vector. *
+ * *
+ * Input: *
+ * Wth_vector *weathers - Our weather vector *
+ * *
+ * Output: *
+ * Nothing *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * 20101106 Gaspar Fernández Added error status *
+ *************************************************************/
+void fetchWeatherInfo(Wth_vector *weathers)
+{
+ Wth_vector *wths= (Wth_vector *)weathers;
+ // bool allok=true;
+ for (unsigned int k=0; k<wths->weathers.size(); k++) {
+ localtemp *current = wths->weathers.at(k);
+ wths->loaded=false; // This will make animated bar disappear when loaded
+
+ if (!current->getInfo())
+ {
+ verbsth(VERB_WARNING, "Don't have access to the server... I'll try later");
+ break;
+ }
+ else if (current->error)
+ {
+ verbsth(VERB_WARNING, "Got an error while retrieving information.");
+ break;
+ }
+ }
+ // wths->loaded=allok; // All loaded
+}
+
+/*************************************************************
+ * Function: getWeatherInfo *
+ *************************************************************
+ * Description: *
+ * Calls fetchWeatherInfo periodically *
+ * *
+ * Input: *
+ * voir *weathers - Our weather vector. It's a void type *
+ * because it is called using pthread_create. *
+ * *
+ * Output: *
+ * NULL *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void *getWeatherInfo(void *weathers)
+{
+ while (1) // Fetch periodically temperatures
+ {
+ if (((Wth_vector *)weathers)->counter>=((Wth_vector *)weathers)->refresh)
+ {
+ ((Wth_vector *)weathers)->counter=0;
+ fetchWeatherInfo((Wth_vector *)weathers);
+ }
+ sleep(1);
+ // fetchWeatherInfo((Wth_vector *)weathers);
+ ((Wth_vector *)weathers)->counter++;
+ }
+ return NULL;
+}
+
+/*************************************************************
+ * Function: load_coords *
+ *************************************************************
+ * Description: *
+ * Translates a string with a,b,c with a,b,c three ints *
+ * to a T_Point structure. But the string may contain two, *
+ * or one number. It is used to locate text, so X *
+ * coordinate, can wi CENTER_TEXT, and Z can be *
+ * DEFAULT_MAX_WIDTH *
+ * *
+ * Input: *
+ * a string with the coordinates separated with commas. *
+ * *
+ * Output: *
+ * T_Point structure containing x, y and z *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+T_Point load_coords(const string &str)
+{
+ T_Point coord;
+ size_t coma = str.find(',',0); // Finds comma
+ size_t coma2 = str.find(',', coma+1); // Finds another comma
+ coord.z = DEFAULT_MAX_WIDTH;
+
+ if (coma!=string::npos)
+ { // Load coordinates
+ coord.x = atoi(trim(str.substr(0,coma)).data());
+ if (coma2!=string::npos)
+ {
+ coord.z = atoi(trim(str.substr(coma+1, coma2-coma+1)).data());
+ coord.y = atoi(trim(str.substr(coma2+1)).data());
+ }
+ else
+ coord.y = atoi(trim(str.substr(coma+1)).data());
+ }
+ else
+ { // Centers text in X
+ coord.x = CENTER_TEXT;
+ coord.y = atoi(str.data());
+ }
+
+ return coord;
+}
+
+/*************************************************************
+ * Function: load_colors *
+ *************************************************************
+ * Description: *
+ * Read the string containing red, green and blue values *
+ * for the desired colour separated with commas. And stores *
+ * this values in a XDrawColor structure *
+ * *
+ * Input: *
+ * string with r,g,b values *
+ * * *
+ * Output: *
+ * XDrawColor structure with that information *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+XDraw::XDrawColor load_colors(string str)
+{
+ XDraw::XDrawColor color;
+ sscanf(str.data(),"%d %d %d", &color.r, &color.g, &color.b);
+ return color;
+}
+
+/*************************************************************
+ * Function: load_wbcoords *
+ *************************************************************
+ * Description: *
+ * Made only to read from config. file the coords of the *
+ * upper left and lower right corners of the wait box *
+ * (this one that appears when the data is being downloaded)*
+ * *
+ * Input: *
+ * string with the coords. separated with spaces *
+ * T_WaitBox structure where to store the data *
+ * *
+ * Output: *
+ * inside T_WaitBox structure, the coordinates of the *
+ * box are loaded from the string *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void load_wbcoords(string str, T_WaitBox *wbox)
+{
+ sscanf(str.data(),"%d %d %d %d", &wbox->x1, &wbox->y1, &wbox->x2, &wbox->y2);
+}
+
+bool existsfilepath(const char* path, const char* file, char pathfile[])
+{
+ bzero(pathfile, 256); // Erase last data
+ strcpy(pathfile, path);
+ strcat((char*)pathfile, file);
+ return (file_exists(pathfile));
+}
+
+/*************************************************************
+ * Function: load_config *
+ *************************************************************
+ * Description: *
+ * Loads the config file into the DwgoConf structure. *
+ * We also do some checks to return error codes. *
+ * *
+ * Input: *
+ * char* file - File to read the configuration *
+ * DwgoConf &config - Where to put the configuration *
+ * Display *display - Used to make some checks *
+ * *
+ * Output: *
+ * DwgoConf &config - We store here the configuration *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void load_config(const char *file, DwgoConf &config, Display *disp, const char *homedir)
+{
+ ifstream inFile;
+
+ string temp,a,b,c,tmp;
+ char *other_dir;
+ char *datadir;
+ size_t pos, pos2;
+ T_Station station;
+ int aux;
+ char pathfile[256]; // 256 temp chars for path+file
+ // This array stores all themes, as we may read it in the file.
+ const char *theme_keywords[TOTAL_THEMES]={"default", "clear", "cloudy", "broken", "tcu", "rainy", "snowy", "hail", "foggy", "dust", "otparts"};
+ cout<<homedir<<"*\n";
+ other_dir=(char*)malloc(strlen(homedir)+6); strcpy(other_dir, homedir); strcat(other_dir, (char*)"/.dwgo");
+ datadir =(char*)malloc(strlen(DATADIR)+5); strcpy(datadir, DATADIR); strcat(datadir, (char*)"/dwgo");
+ config.stations.clear(); // Clear station vector
+ config.update_int=0;
+ config.deg_unit=DEFAULT_DEG_UNIT;
+ inFile.open(file) ;
+
+// verbsth(VERB_NOTICE, "K"+strcat((char*)homedir,(char*)file););
+ if (inFile.is_open())
+ {
+ while (!inFile.eof()){
+ getline(inFile,temp);
+ pos = temp.find_first_of((char*)" =#"); // We can find \n (skipped when reading) , #, =, (space) symbols
+ if (pos!=string::npos)
+ {
+ a=trim(temp.substr(0,pos)); // Store here what's before the " ","=" of "#"
+ b=trim(temp.substr(pos+1)); // Store here what's after that
+ switch (temp[pos])
+ {
+ case '=': // If we've found =...
+ pos2=a.find("->"); // An arrow indicates theme or waitbox properties
+ if (pos2!=string::npos)
+ {
+ c=a.substr(pos2+2); // Store here what's after the ->
+ a=a.substr(0,pos2); // Store here what's between the = and the ->
+ aux=find_str_in_array(a.data(),theme_keywords, TOTAL_THEMES); // if we've found a, in the array of themes...
+ if (aux>-1) // Right theme, let's see the options
+ {
+ if (c=="img") // img property, specify the XPM to load when this theme is active
+ {
+ tmp="/"+b;
+ if (file_exists(b.data()))
+ load_str_chr(&config.metar_themes[aux].img, b);
+ else if (existsfilepath(other_dir, tmp.data(), pathfile))
+ load_str_chr(&config.metar_themes[aux].img, pathfile);
+ else if (existsfilepath(datadir, tmp.data(), pathfile))
+ load_str_chr(&config.metar_themes[aux].img, pathfile);
+ else
+ verbsth(VERB_WARNING,"Can't find default img file: "+b+" for "+c+"_img attribute");
+ }
+ else if (c=="txtfont") // text found - Generally station name
+ {
+ if (testfont(b.data(), disp))
+ load_str_chr(&config.metar_themes[aux].text_font, b);
+ else
+ {
+ if (aux>0)
+ {
+ load_str_chr(&config.metar_themes[aux].text_font, config.metar_themes[0].text_font); // Load default font
+ verbsth(VERB_WARNING, ("Can't load font: ")+b+(" loading default instead."));
+ }
+ else
+ error_handler(ERR_BADFONT, (char*) b.data()); // Can't continue
+ }
+ }
+ else if (c=="tempfont") // temperature font
+ {
+ if (testfont(b.data(), disp))
+ load_str_chr(&config.metar_themes[aux].temp_font, b);
+ else
+ {
+ if (aux>0)
+ {
+ load_str_chr(&config.metar_themes[aux].temp_font, config.metar_themes[0].temp_font); // Load default font
+ verbsth(VERB_WARNING, ("Can't load font: ")+b+(" loading default instead."));
+ }
+ else
+ error_handler(ERR_BADFONT, (char*) b.data()); // Can't continue
+ }
+ }
+ else if (c=="timefont") // time fond - Specify when was the data taken
+ {
+ if (testfont(b.data(), disp))
+ load_str_chr(&config.metar_themes[aux].time_font, b);
+ else
+ {
+ if (aux>0)
+ {
+ load_str_chr(&config.metar_themes[aux].time_font, config.metar_themes[0].time_font); // Load default font
+ verbsth(VERB_WARNING, ("Can't load font: ")+b+(" loading default instead."));
+ }
+ else
+ error_handler(ERR_BADFONT, (char*) b.data()); // Can't continue
+ }
+
+ }
+ else if (c=="txtloc") // Where to put the station name text
+ config.metar_themes[aux].stname=load_coords(b);
+ else if (c=="timloc") // Where to put the time text
+ config.metar_themes[aux].sttime=load_coords(b);
+ else if (c=="tmploc") // Where to put the temperature text
+ config.metar_themes[aux].sttemp=load_coords(b);
+ else if (c=="textcolor") // Station name text color
+ config.metar_themes[aux].text_color=load_colors(b);
+ else if (c=="timecolor") // Time text color
+ config.metar_themes[aux].time_color=load_colors(b);
+ else if (c=="tempcolor") // Temperature textcolor
+ config.metar_themes[aux].temp_color=load_colors(b);
+ }
+ else if (a=="waitbox") // If it is not a theme, it may be the waitbox
+ {
+ if (c=="coords") // Coordinates
+ load_wbcoords(b, &config.wbox);
+ else if (c=="out_color") // Border color
+ config.wbox.out_color=load_colors(b);
+ else if (c=="in_color") // Fill in color
+ config.wbox.in_color=load_colors(b);
+ else if (c=="bar_color") // Moving bar color
+ config.wbox.bar_color=load_colors(b);
+ }
+ else
+ verbsth(VERB_WARNING, "Sorry, I can't recognise "+a+"_"+c+" attribute.");
+ }
+ else if (a=="update_interval") // Weather will update each (update_interval) seconds
+ config.update_int=atoi(b.data());
+ else if (a=="deg_unit") // (C)elsius or (F)ahrenheit
+ config.deg_unit=b[0]; // Only first char
+
+ break;
+ case ' ': // If the first thing we see is a " ", insead of a "="
+ if (a== "AddStation") // Adds station to monitor
+ {
+ pos=b.find(":",0); // The stations must be specified with the station name, separated with ":"
+ a=b.substr(0,pos);
+ b=b.substr(pos+1);
+ strcpy(station.station,a.data());
+ strcpy(station.name,b.substr(0,14).data()); // Just 15 characters
+ config.stations.push_back(station);
+ verbsth(VERB_NOTICE, "Add Station \""+a+"\" called \""+b+"\"");
+ }
+ break;
+
+ }
+ }
+ }
+ inFile.close();
+
+ if (config.update_int==0) // Prevent update_interval from being zero
+ config.update_int=DEFAULT_UPDATE_INTERVAL; // If it is not defined, or 0, replace it with the default value
+ if (config.metar_themes[DEFAULT_THEME].sttemp.y==-1) // Temperature must be shown
+ error_handler(ERR_BADSTTEMP,NULL);
+ // Colors must have positive values
+ if (config.metar_themes[DEFAULT_THEME].text_color.r==-1)
+ error_handler(ERR_BADDFTCLR,NULL);
+ if (config.metar_themes[DEFAULT_THEME].time_color.r==-1)
+ error_handler(ERR_BADDFICLR,NULL);
+ if (config.metar_themes[DEFAULT_THEME].temp_color.r==-1)
+ error_handler(ERR_BADDFECLR,NULL);
+
+ }
+ else
+ error_handler(ERR_CFGNOTFOUND,NULL);
+}
+
+/*************************************************************
+ * Function: time_diff *
+ *************************************************************
+ * Description: *
+ * Calculates local timezone time difference with GMT. *
+ * *
+ * Input: *
+ * Nothing *
+ * *
+ * Output: *
+ * int - Time difference in seconds (local_time-gmt_time)*
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+int time_diff ()
+{
+ struct tm *local, *gmt;
+ int local_s, gmt_s;
+ time_t tmp;
+
+ tmp = time(0);
+ gmt = gmtime(&tmp);
+ if (gmt->tm_yday==0)
+ gmt->tm_yday=366;
+
+ gmt_s = gmt->tm_yday*86400+gmt->tm_hour*3600 + gmt->tm_min* 60 + gmt->tm_sec;
+
+ tmp = time(0);
+ local = localtime(&tmp);
+ if (local->tm_yday==0)
+ local->tm_yday=366;
+ local_s = local->tm_yday*86400 + local->tm_hour*3600 + local->tm_min*60 + local->tm_sec;
+
+ return (local_s-gmt_s);
+}
+
+/*************************************************************
+ * Function: displaytemp *
+ *************************************************************
+ * Description: *
+ * Draws an image inside the dockapp and renders text *
+ * with location name, temperature and time when the data *
+ * was taken. *
+ * *
+ * Input: *
+ * XDraw *image - Image which will be drawn in the *
+ * dockapp. *
+ * DwgoConf cfg - Configuration *
+ * localtemp local_stt - Local Station information *
+ * int tm_diff - Time difference (see time_diff() func.)*
+ * char *xpmthemes - XPM images to display *
+ * *
+ * Output: *
+ * Nothing *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void displaytemp(XDraw *image, const DwgoConf cfg, localtemp *local_stt, int tm_diff, char *xpm_themes[])
+{
+ char tmp_disp[10]; // Aux to display temperature
+ char *txt_font;
+ char *tmp_font;
+ char *tim_font;
+ int theme=local_stt->theme;
+ XDraw::XDrawColor txcolor, ticolor, tecolor;
+ T_Point sttemp, sttext, sttime;
+ time_t time_taking;
+ struct tm *moment;
+
+ // We load each xpm_themes image when it is needed.
+ if (xpm_themes[theme]==NULL)
+ {
+ if (file_exists(cfg.metar_themes[theme].img))
+ {
+ XpmReadFileToBuffer(cfg.metar_themes[theme].img, &xpm_themes[theme]);
+ verbsth(VERB_NOTICE, (string)"Loading img. theme: "+cfg.metar_themes[theme].img);
+ }
+ else
+ { // If xpm file doesn't exists we load the default theme
+ local_stt->theme=DEFAULT_THEME;
+ theme=DEFAULT_THEME;
+ }
+
+ }
+
+ // We do some checks and we change theme details to default details when we can't use them.
+ // We copy this data to our temp string. If we are quick, themes can change and the app crash
+ if (cfg.metar_themes[theme].text_font!=NULL)
+ load_str_chr(&txt_font,cfg.metar_themes[theme].text_font);
+ else
+ load_str_chr(&txt_font,cfg.metar_themes[0].text_font);
+
+ if (cfg.metar_themes[theme].temp_font!=NULL)
+ load_str_chr(&tmp_font,cfg.metar_themes[theme].temp_font);
+ else
+ load_str_chr(&tmp_font,cfg.metar_themes[0].temp_font);
+
+ if (cfg.metar_themes[theme].time_font!=NULL)
+ load_str_chr(&tim_font,cfg.metar_themes[theme].time_font);
+ else
+ load_str_chr(&tim_font,cfg.metar_themes[0].time_font);
+
+ // (C)elsius of (F)ahrenheit
+ if (cfg.deg_unit=='F')
+ sprintf(tmp_disp, "%d "DEG_SYMBOL"F", local_stt->fahrenheit);
+ else
+ sprintf(tmp_disp, "%d "DEG_SYMBOL"C", local_stt->celsius);
+
+ image->replace_background(xpm_themes[theme]); // Load the background image
+ image->setWindowPixmapShaped();
+
+ // If y position of the text is -1 in the current theme, it will be replaced with default theme position.
+ // but the temperature. It will be if y<=-1 (if text or time y position is >-1 it won't be displayed)
+ sttemp=(cfg.metar_themes[theme].sttemp.y>-1)?cfg.metar_themes[theme].sttemp:cfg.metar_themes[0].sttemp;
+ sttext=(cfg.metar_themes[theme].stname.y==-1)?cfg.metar_themes[DEFAULT_THEME].stname:cfg.metar_themes[theme].stname;
+ sttime=(cfg.metar_themes[theme].sttime.y==-1)?cfg.metar_themes[DEFAULT_THEME].sttime:cfg.metar_themes[theme].sttime;
+
+ // Test current theme color
+ // If red value of the color is -1, the color will be replaced with the default.
+ txcolor=(cfg.metar_themes[theme].text_color.r==-1)?cfg.metar_themes[DEFAULT_THEME].text_color:cfg.metar_themes[theme].text_color;
+ ticolor=(cfg.metar_themes[theme].time_color.r==-1)?cfg.metar_themes[DEFAULT_THEME].time_color:cfg.metar_themes[theme].time_color;
+ tecolor=(cfg.metar_themes[theme].temp_color.r==-1)?cfg.metar_themes[DEFAULT_THEME].temp_color:cfg.metar_themes[theme].temp_color;
+
+ // Draw strings
+ image->drawString(sttemp.x, sttemp.y, sttemp.z, tecolor, (char*)tmp_font, tmp_disp);
+ if (sttext.y>-1)
+ image->drawString(sttext.x, sttext.y, sttext.z, txcolor, (char*)txt_font, (char*)local_stt->location_name.data());
+ if ((sttime.y>-1) && (local_stt->loaded))
+ {
+ time_taking=local_stt->info_time+tm_diff; // Translates to local time
+ moment=localtime(&time_taking);
+ sprintf(tmp_disp, "%.2d:%.2d", moment->tm_hour,moment->tm_min); // Makes it 00:00
+ image->drawString(sttime.x, sttime.y, sttime.z, ticolor, (char*)tim_font, (char*)tmp_disp);
+ }
+
+ image->Sync();
+
+}
+
+/*************************************************************
+ * Function: config_defaults *
+ *************************************************************
+ * Description: *
+ * Loads the default configuration in DwgoConf structure.*
+ * *
+ * *
+ * Input: *
+ * DwgoConf *Dwgo_Configuration *
+ * *
+ * Output: *
+ * DwgoConf *Dwgo_Configuration - It will have defaults *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void config_defaults(DwgoConf *Dwgo_Configuration)
+{
+ const T_Point def_sttemp = DEFAULT_STTEMP;
+ const XDraw::XDrawColor clnull = DEFAULT_STTEMP;
+
+ Dwgo_Configuration->wbox.x1=2;
+ Dwgo_Configuration->wbox.x2=62;
+ Dwgo_Configuration->wbox.y1=2;
+ Dwgo_Configuration->wbox.y1=12;
+ Dwgo_Configuration->wbox.in_color=setDrawColor(100,100,20);
+ Dwgo_Configuration->wbox.out_color=setDrawColor(10,10,2);
+ Dwgo_Configuration->wbox.bar_color=setDrawColor(50,50,12);
+
+ for (int j=0;j<TOTAL_THEMES;j++)
+ {
+ Dwgo_Configuration->metar_themes[j].text_font=NULL;
+ Dwgo_Configuration->metar_themes[j].temp_font=NULL;
+ Dwgo_Configuration->metar_themes[j].time_font=NULL;
+ Dwgo_Configuration->metar_themes[j].sttemp=def_sttemp;
+ Dwgo_Configuration->metar_themes[j].stname=def_sttemp;
+ Dwgo_Configuration->metar_themes[j].sttime=def_sttemp;
+ Dwgo_Configuration->metar_themes[j].text_color=clnull;
+ Dwgo_Configuration->metar_themes[j].temp_color=clnull;
+ Dwgo_Configuration->metar_themes[j].time_color=clnull;
+ }
+
+}
+
+/*************************************************************
+ * Function: weathers_create_list *
+ *************************************************************
+ * Description: *
+ * Fills the Wth_vector weathers vector with the *
+ * stations loaded from the confiuration file. And flag *
+ * the structure to update. *
+ * *
+ * Input: *
+ * Wth_vector *weathers - *
+ * DwgoConf Dwgo_Configuration - Where to get the data from*
+ * *
+ * Output: *
+ * Wth_vector - We will fill in the weathers vector here. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void weathers_create_list(Wth_vector *weathers, DwgoConf Dwgo_Configuration)
+{
+ weathers->counter=Dwgo_Configuration.update_int; // Refresh now !!
+ weathers->refresh=Dwgo_Configuration.update_int; // Refresh now !!
+
+
+ weathers->loaded=false;
+ weathers->weathers.clear();
+
+ for (unsigned int k=0; k<Dwgo_Configuration.stations.size(); k++)
+ weathers->weathers.push_back(new localtemp((char*)Dwgo_Configuration.stations.at(k).station,
+ (char*)Dwgo_Configuration.stations.at(k).name));
+
+}
+
+/*************************************************************
+ * Function: weathers_loader *
+ *************************************************************
+ * Description: *
+ * Calls weathers_create_list and creates the thread *
+ * that will periodically reload weather information from *
+ * the server *
+ * *
+ * Input: *
+ * Wth_vector - Where the weather info will be stored *
+ * DwgoConf Dwgo_Configuration - Configuration loaded from *
+ * file *
+ * *
+ * Output: *
+ * Nothing *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void weathers_loader(Wth_vector *weathers, DwgoConf Dwgo_Configuration)
+{
+ Wth_vector *th_parm;
+ pthread_t *threads;
+ pthread_attr_t pthread_custom_attr;
+
+ weathers_create_list(weathers, Dwgo_Configuration);
+
+ threads=(pthread_t *)malloc(1*sizeof(*threads));
+ pthread_attr_init(&pthread_custom_attr);
+
+ th_parm=weathers;
+
+ pthread_create(threads, &pthread_custom_attr, getWeatherInfo, (void *)(th_parm));
+}
+
+/*************************************************************
+ * Function: getHomeDir *
+ *************************************************************
+ * Description: *
+ * Try to guess home directory. First searching HOME *
+ * environment variable, then try getpwuid. *
+ * *
+ * Input: *
+ * Nothing *
+ * *
+ * Output: *
+ * char* path to user home *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+char *getHomeDir()
+{
+ static char *home = NULL;
+
+ if (!home)
+ {
+ home = getenv("HOME") ;
+ }
+ if (!home)
+ {
+ struct passwd *pw = getpwuid(getuid());
+ if (pw) home = pw->pw_dir ;
+ }
+ return home;
+}
+
+bool copyfile(const char* filefrom, const char* fileto)
+{
+
+ FILE *ffrom = NULL;
+ FILE *fto = NULL;
+ char buf[512];
+
+ ffrom = fopen( filefrom, "rb" );
+ if( ffrom != NULL )
+ {
+ fto = fopen( fileto, "wb" );
+ if( fto != NULL )
+ {
+ while (fgets(buf, 256, ffrom)) {
+ if (fputs(buf, fto) == EOF) { // error writing data
+ return false;
+ }
+ }
+ }
+ else
+ return false;
+
+ fclose( ffrom );
+ }
+ else
+ return false;
+ return true;
+
+}
+
+char *locateConfig(const char* homeuser)
+{
+ static char cfgpath[256];
+ char tmp[256];
+ if (existsfilepath(homeuser, "/.dwgo.conf", cfgpath))
+ return cfgpath;
+ else if (existsfilepath(homeuser, "/.dwgo/dwgo.conf", cfgpath))
+ return cfgpath;
+ else if (existsfilepath(DATADIR, "/dwgo/dwgo.conf", cfgpath))
+ {
+ existsfilepath(homeuser, "/.dwgo.conf", tmp);
+ if (copyfile(cfgpath, tmp)) // Copies /usr/share/dwgo/dwgo.conf -> ~/.dwgo.conf
+ strcpy(cfgpath, tmp); // If config file is copied -> Return user configuration
+
+ return cfgpath;
+ }
+ else if (file_exists("dwgo.conf"))
+ return (char*)"dwgo.conf";
+ else
+ return NULL;
+}
+
+// Main application
+int main(int argc, char** argv) {
+
+ Wth_vector weathers;
+
+ Display* disp;
+ Window mRoot;
+ Window mAppWin;
+ Window mIconWin;
+ char* xpm_themes[TOTAL_THEMES]; // Where to load XPMs
+ bool bar=false; // Toggle the bar beacuse you like it
+ XClassHint classHint;
+ XSizeHints sizeHints;
+ XWMHints wmHints;
+ Atom deleteWindow;
+ XDraw* image;
+ XEvent report;
+ KeySym ksym;
+ DwgoConf Dwgo_Configuration; // Main configuration
+ int eventmask;
+
+ char *user_homedir; // User home directory
+
+ char *home_dir; // Copy of user_homedir because we overwrite user_homedir Q&D
+
+ char *config_path; // Config file with path
+
+ int anim=0; // Waitbar animation status
+ bool direc=true; // Direction of the waitbar animation
+
+ int punter=0; // Location being displayed actually
+
+ int tm_diff=0; // Time differente
+ timespec tmp={0,30000000L}; // Sleep time between X updates
+
+ user_homedir= getHomeDir();
+ home_dir=(char*)malloc(strlen(user_homedir));
+ strcpy(home_dir, user_homedir);
+
+ config_path=locateConfig(user_homedir);
+ if (config_path==NULL)
+ error_handler(ERR_NOCFGFILE, NULL);
+
+ if ((disp = XOpenDisplay(NULL)) == NULL)
+ error_handler(ERR_NODISPLAY, NULL);
+
+ config_defaults(&Dwgo_Configuration);
+ for (int j=0;j<TOTAL_THEMES;j++)
+ xpm_themes[j]=NULL; // Point all xpms to NULL
+
+ load_config(config_path, Dwgo_Configuration, disp, home_dir);
+
+ tm_diff=time_diff();
+ weathers_loader(&weathers, Dwgo_Configuration);
+
+
+ // Get root window
+ mRoot = RootWindow(disp, DefaultScreen(disp));
+ // Create windows
+ mAppWin = XCreateSimpleWindow(disp, mRoot, 1, 1, 64, 64, 0, 0, 0);
+ mIconWin = XCreateSimpleWindow(disp, mAppWin, 0, 0, 64, 64, 0, 0, 0);
+
+ // Set classhint
+ classHint.res_name = (char*) "DWGO";
+ classHint.res_class = (char*) "DWGO";
+ XSetClassHint(disp, mAppWin, &classHint);
+
+
+ // Create delete atom
+ deleteWindow = XInternAtom(disp, "WM_DELETE_WINDOW", False);
+ XSetWMProtocols(disp, mAppWin, &deleteWindow, 1);
+ XSetWMProtocols(disp, mIconWin, &deleteWindow, 1);
+
+ // Set windowname
+ XStoreName(disp, mAppWin, "DWGO 0.3");
+ XSetIconName(disp, mAppWin, "DWGO 0.3");
+
+ // Set sizehints
+ sizeHints.flags= USPosition;
+ sizeHints.x = 0;
+ sizeHints.y = 0;
+ XSetWMNormalHints(disp, mAppWin, &sizeHints);
+ // Set wmhints.. Make it a dockapp
+ wmHints.initial_state = WithdrawnState;
+ wmHints.icon_window = mIconWin;
+ wmHints.icon_x = 0;
+ wmHints.icon_y = 0;
+ wmHints.window_group = mAppWin;
+ wmHints.flags = StateHint | IconWindowHint | IconPositionHint | WindowGroupHint;
+ XSetWMHints(disp, mAppWin, &wmHints);
+
+ // Set command
+ XSetCommand(disp, mAppWin, argv, argc); // X Params.
+// // Set background image
+
+ XpmReadFileToBuffer(Dwgo_Configuration.metar_themes[DEFAULT_THEME].img, &xpm_themes[DEFAULT_THEME]);
+ image = new XDraw(disp, mRoot, xpm_themes[DEFAULT_THEME]);
+ image->setDefaultWindow(mIconWin);
+ image->setWindowPixmapShaped(mIconWin);
+
+ XMapWindow(disp, mIconWin);
+ XMapWindow(disp, mAppWin);
+ XSync(disp, False);
+
+ eventmask= ButtonPressMask | //ButtonReleaseMask |
+ FocusChangeMask | LeaveWindowMask | KeyPressMask |
+ EnterWindowMask;
+ XSelectInput(disp, mIconWin, eventmask );
+
+ while (1) // Main loop!!
+ {
+ if (XCheckMaskEvent(disp, eventmask, &report))
+ {
+ switch (report.type)
+ {
+ case KeyPress:
+ ksym = XLookupKeysym(&(report.xkey), report.xkey.state);
+
+ switch (ksym)
+ {
+// case XK_Escape:
+// exit(0);
+// break;
+ case XK_F5:
+ if (weathers.counter>3) // Min. time between refreshes
+ weathers.counter=weathers.refresh; // Refresh weathers
+ else
+ verbsth(VERB_WARNING,"You just have updated temperatures!!! Wait a little bit!");
+ break;
+ case XK_F6: // Reload conf. file, Useful form theme creation and conf. checks
+ punter=0;
+ weathers.counter=0; // Make sure it won't update during reload
+ config_defaults(&Dwgo_Configuration);
+ for (int j=0;j<TOTAL_THEMES;j++)
+ xpm_themes[j]=NULL; // Point all xpms to NULL
+
+ load_config(".dwgo", Dwgo_Configuration, disp, home_dir);
+ weathers_create_list(&weathers, Dwgo_Configuration);
+ break;
+ case XK_Down:
+ case XK_Left:
+ punter--;
+ if (punter==-1)
+ punter=weathers.weathers.size()-1;
+ displaytemp(image, Dwgo_Configuration, weathers.weathers.at(punter), tm_diff, xpm_themes);
+ break;
+ case XK_Up:
+ case XK_Right:
+ punter++;
+ if ((unsigned)punter==weathers.weathers.size())
+ punter=0;
+ displaytemp(image, Dwgo_Configuration, weathers.weathers.at(punter), tm_diff, xpm_themes);
+ break;
+ case XK_b:
+ bar=!bar;
+ displaytemp(image, Dwgo_Configuration, weathers.weathers.at(punter), tm_diff, xpm_themes);
+
+ default: break;
+
+ }
+ break;
+ case ButtonPress:
+ switch (report.xbutton.button) {
+ case Button1:
+ punter++;
+ if ((unsigned)punter==weathers.weathers.size())
+ punter=0;
+ displaytemp(image, Dwgo_Configuration, weathers.weathers.at(punter), tm_diff, xpm_themes);
+ break;
+ case Button3:
+ verbsth(VERB_ASTTO,"Right click");
+ break;
+ }
+ break;
+ case EnterNotify:
+ case LeaveNotify:
+ XSetInputFocus(disp, mIconWin, RevertToParent, CurrentTime);
+ verbsth(VERB_ASTTO, " Focus Change");
+ break;
+ default:
+ verbsth(VERB_ASTTO, "Another Event");
+ }
+ }
+ else
+ {
+
+ if ((!weathers.weathers.at(punter)->loaded) || (bar))
+ {
+ image->DrawRect(Dwgo_Configuration.wbox.x1,Dwgo_Configuration.wbox.y1,Dwgo_Configuration.wbox.x2,Dwgo_Configuration.wbox.y2, Dwgo_Configuration.wbox.out_color);
+ image->DrawRect(Dwgo_Configuration.wbox.x1+1,Dwgo_Configuration.wbox.y1+1,Dwgo_Configuration.wbox.x2-2,Dwgo_Configuration.wbox.y2-2, Dwgo_Configuration.wbox.in_color);
+ image->DrawRect(Dwgo_Configuration.wbox.x1+1+anim,Dwgo_Configuration.wbox.y1+1,6,Dwgo_Configuration.wbox.y2-2, Dwgo_Configuration.wbox.bar_color);
+ if (direc)
+ anim++;
+ else
+ anim--;
+ if ((anim==Dwgo_Configuration.wbox.x2-8) || (anim==0)) // Dwgo_Configuration.wbox.x2 -2 -6 (bar width)
+ direc=!direc;
+ image->Sync();
+ }
+ else if (!weathers.loaded)
+ {
+ weathers.loaded=true;
+ displaytemp(image, Dwgo_Configuration, weathers.weathers.at(punter), tm_diff, xpm_themes);
+ }
+
+
+ }
+ nanosleep(&tmp, NULL);
+ }
+ delete image;
+}
diff --git a/src/dwgo.h b/src/dwgo.h
new file mode 100644
index 0000000..ab8dfb9
--- /dev/null
+++ b/src/dwgo.h
@@ -0,0 +1,24 @@
+// THEME selection depending on sky/rain/fog/conditions
+
+#define TOTAL_THEMES 11
+
+#define DEFAULT_THEME 0
+#define CLEAR_THEME 1
+#define CLOUDY_THEME 2
+#define BROKEN_THEME 3
+#define TCU_THEME 4
+
+#define RAINY_THEME 5
+#define SNOWY_THEME 6
+#define HAIL_THEME 7
+
+#define FOG_THEME 8
+#define DUST_THEME 9
+#define PARTS_THEME 10 // Other particles
+
+#define DEFAULT_UPDATE_INTERVAL 900 // 900 seconds=15 minutes
+#define DEFAULT_DEG_UNIT 'C' // Celsius by default
+#define DEFAULT_MAX_WIDTH 64 // If default width is undefined, take 64
+
+#define DEFAULT_STTEMP {-1,-1,-1}
+#define DEG_SYMBOL "º"
diff --git a/src/errors.cpp b/src/errors.cpp
new file mode 100644
index 0000000..a884233
--- /dev/null
+++ b/src/errors.cpp
@@ -0,0 +1,128 @@
+#include <iostream>
+#include "errors.h"
+
+using namespace std;
+
+int verbose_level=DEFAULT_VERBOSE;
+
+/*************************************************************
+ * Function: error_handler *
+ *************************************************************
+ * Description: *
+ * Shows error message on the screen and abort execution *
+ * of the program. *
+ * *
+ * Input: *
+ * int err_code - Which error? *
+ * char *add_string - Some errors may display additional *
+ * information. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void error_handler (int err_code, char *add_string)
+{
+ if (err_code==OKAY)
+ {
+ return; // Does nothing
+ }
+ else
+ {
+ switch (err_code)
+ {
+ case ERR_NODISPLAY:
+ cout<<"Couldn't open display.";
+ break;
+ case ERR_XPMERROR:
+ cout<<"Couldn't load XPM image";
+ break;
+ case ERR_BADFONT:
+ cout<<"Couldn't load desired font: "<<add_string;
+ break;
+ case ERR_BADSTTEMP:
+ cout<<"Default temperature position not defined";
+ break;
+ case ERR_CFGNOTFOUND:
+ cout<<"Configuration file ~/.dwgo.conf not found. See documentation";
+ break;
+ case ERR_BADDFTCLR:
+ cout<<"Bad default text color. See default_textcolor in config. file";
+ break;
+ case ERR_BADDFICLR:
+ cout<<"Bad default time color. See default_timecolor in config. file";
+ break;
+ case ERR_BADDFECLR:
+ cout<<"Bad default temp color. See default_tempcolor in config. file";
+ break;
+ case ERR_NOCFGFILE:
+ cout<<"Configuration file not found.";
+ break;
+
+ default:
+ cout<<"Unknown error!!! :S";
+ }
+ cout <<endl;
+ exit (err_code);
+ }
+}
+
+/*************************************************************
+ * Function: verbsth *
+ *************************************************************
+ * Description: *
+ * The application wants to tell the user something via *
+ * stdout, acording to the verbose level chosen, it will *
+ * display some messages, but some don't. Are we debugging? *
+ * *
+ * Input: *
+ * int level - Verbose level *
+ * char *msg or string msg - Is the message to be *
+ * displayed. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+
+void verbsth (int level, const char *msg)
+{
+ if (level<=verbose_level)
+ cout << msg <<endl;
+}
+
+void verbsth (int level, string msg)
+{
+ if (level<=verbose_level)
+ cout << msg <<endl;
+}
+
+/*************************************************************
+ * Function: file_exists *
+ *************************************************************
+ * Description: *
+ * Does the specified file exist? *
+ * *
+ * Input: *
+ * const char *name - File name *
+ * *
+ * Output: *
+ * True if the file exists, it not, False *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+bool file_exists( const char *name )
+{
+ FILE *fp = NULL;
+
+ fp = fopen( name, "rb" );
+ if( fp != NULL )
+ {
+ fclose( fp );
+ return true;
+ }
+
+ return false;
+}
diff --git a/src/errors.h b/src/errors.h
new file mode 100644
index 0000000..b0b4ab4
--- /dev/null
+++ b/src/errors.h
@@ -0,0 +1,30 @@
+#ifndef _ERRORS_CPP_
+#define _ERRORS_CPP_
+#include <string>
+#define OKAY 0
+
+#define ERR_NODISPLAY 1001 // Could not open display
+#define ERR_XPMERROR 1003 // Error Creating Pixmap
+#define ERR_BADFONT 1004 // Error loading desired font
+#define ERR_BADSTTEMP 1005 // Default Sttemp not defined
+#define ERR_CFGNOTFOUND 1006 // Configuration file not found
+#define ERR_BADDFTCLR 1007 // Bad default Text color
+#define ERR_BADDFICLR 1008 // Bad default tIme color
+#define ERR_BADDFECLR 1009 // Bad default tEmp color
+#define ERR_NOCFGFILE 1010 // Can't locate configuration file
+
+#define VERB_NONE 0 // No verbose
+#define VERB_CRITICAL 100 // Just critical complains
+#define VERB_WARNING 1000 // Critical complains + Warnings
+#define VERB_NOTICE 10000 // Critical complains + Warnings + Notices
+#define VERB_ASTTO 100000 // Any single thing that occurs. Verbose everything
+
+#define DEFAULT_VERBOSE VERB_ASTTO // Default verbose, modify wich -v
+
+using namespace std;
+void error_handler (int err_code, char *add_string);
+void verbsth (int level, const char *msg);
+void verbsth (int level, string msg);
+bool file_exists( const char *name );
+
+#endif
diff --git a/src/localtemp.cpp b/src/localtemp.cpp
new file mode 100644
index 0000000..388de6e
--- /dev/null
+++ b/src/localtemp.cpp
@@ -0,0 +1,359 @@
+ /*******************************************************************************
+ * File: localtemp.cpp *
+ * Version: 0.3 *
+ * Date: 20080508 *
+ * Author: Gaspar Fernández (helyo@totaki.com) *
+ * *
+ * Copyright (C) 2008 Gaspar Fernández *
+ * *
+ * This program is free software: you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation, either version 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
+ * *
+ ********************************************************************************
+ * Description:
+ * It is part of a Window Maker dockapp called dwgo. This class reads weather
+ * of a selected location from National Weather Service (http://weather.noaa.gov/)
+ * and parses some information to display it formatted on screen.
+ * I know it parses unnecesary information, but I'm planning to update dwgo
+ * with some improvements that use all this information.
+ *
+ * Change History:
+ * Date (D.M.Y) Author Modification
+ * 08.05.2008 Gaspar Fernández Initial release
+ * 31.10.2010 Gaspar Fernández Bug Corrections
+ *
+ ********************************************************************************/
+
+#include "localtemp.h"
+#include "MySock.h"
+#include "dwgo.h" // Theme numbers
+
+using namespace std;
+
+/*************************************************************
+ * Constructur: localtemp *
+ *************************************************************
+ * Description: *
+ * Initializes variables *
+ * *
+ * Input: *
+ * char *metar - ICAO name locator (4 chars) *
+ * char location_name - Name of this location *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+localtemp::localtemp(char *metar, char *location_name)
+{
+ this->metar=metar;
+ this->location_name=location_name;
+ this->celsius=0;
+ this->fahrenheit=0;
+ this->loaded=false;
+ this->theme=DEFAULT_THEME;
+}
+
+/*************************************************************
+ * Method: set_temp *
+ *************************************************************
+ * Description: *
+ * Extract temperature information. In Celsius and *
+ * Fahrenheit *
+ * *
+ * Input: *
+ * string tmp_str - Temporary string containing *
+ * temperature in Celsius and Fahrenheit *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void localtemp::set_temp(string tmp_str)
+{
+ char buf[8],buf3[8];
+ // Format xx F (xx C)
+ sscanf(tmp_str.data(), "%s %s (%s", buf, buf3, buf3); // We don't want to store the middle F
+ this->celsius=atoi(buf3);
+ this->fahrenheit=atoi(buf);
+}
+
+/*************************************************************
+ * Method: set_humidity *
+ *************************************************************
+ * Description: *
+ * Extract humidity information. *
+ * *
+ * Input: *
+ * string hum - Temporary string containing humidity info. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void localtemp::set_humidity(string hum)
+{
+ char buf[5]; // Be able to store a 100%\0
+ // Format (xxx%)
+ sscanf(hum.data(), "%s", buf);
+ this->humidity=atoi(buf);
+}
+
+/*************************************************************
+ * Method: get_ob_info *
+ *************************************************************
+ * Description: *
+ * Extracts METAR encoded information. We find it in *
+ * the line starting with "ob: ". We parse this information *
+ * and fill in variables. Used for time and sky conditions. *
+ * *
+ * Input: *
+ * Nothing *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void localtemp::get_ob_info() // ob: line stores METAR information. This info. is useful to know more exactly sky conditions.
+{ // It stores also temperature, time and other info extracted by the decoded text
+
+ size_t pos;
+ struct tm *localtm;
+ struct tm *remotetm;
+ remotetm =new struct tm;
+ string timeinfo;
+try
+ {
+ timeinfo=this->ob.substr(6,this->ob.find(' ',6)-6); // DDHHMM[Z] Day Hour Minute Z (Zulu, Aviation Time Reference)
+ } catch (exception &e)
+ {
+ cout<<"fallo en 1"<<ob<<"***"<<endl;
+ }
+ localtm=localtime(&get_time); // tm of the fetch time
+
+ // We need month and year of the time given. So let's calculate.
+try
+ {
+
+ remotetm->tm_mday=atoi(timeinfo.substr(0,2).data());
+ remotetm->tm_hour=atoi(timeinfo.substr(2,2).data());
+ remotetm->tm_min=atoi(timeinfo.substr(4,2).data());
+ } catch (exception &e)
+ {
+ cout<<"fallo en 2"<<timeinfo<<"*"<<endl;
+ }
+ remotetm->tm_mon=localtm->tm_mon;
+ remotetm->tm_year=localtm->tm_year;
+ remotetm->tm_sec=0;
+
+ if (remotetm->tm_mday==1) // Month of the data
+ {
+ if (remotetm->tm_mday!=localtm->tm_mday)
+ remotetm->tm_mon++;
+ if (remotetm->tm_mon==12) // It can't be 12!!
+ {
+ remotetm->tm_mon=0;
+ remotetm->tm_year++;
+ }
+ }
+ info_time=mktime(remotetm);
+
+try
+ {
+ this->ob=this->ob.substr(ob.find(' ',6)); // Extract ICAO station name and TIME INFO.
+ // It will prevent some errors. We could find any of these strings in that name.
+
+ //this->ob=this->ob.substr(this->ob.find(this->metar)+5);
+ this->ob=this->ob.substr(0,this->ob.rfind('/')-2); // The info. we want is located betweet the last
+
+ pos=this->ob.rfind('/'); // 2 slashes. The las one indicates temperature and dew point
+ if (pos!=string::npos) // The other one, may not exists but sometimes it does.
+ this->ob=this->ob.substr(this->ob.rfind('/'));
+
+ } catch (exception &e)
+ {
+ cout <<"Fallo en 3"<<ob<<"***"<<endl;
+ }
+ //Sky
+ if (this->ob.find("TCU")!=string::npos)
+ mInfo.sky=tcu;
+ else if ((this->ob.find("BKN")!=string::npos) ||
+ (this->ob.find("OVC")!=string::npos))
+ mInfo.sky=brkovc;
+ else if ((this->ob.find("FEW")!=string::npos) ||
+ (this->ob.find("SCT")!=string::npos))
+ mInfo.sky=cloudy;
+ else if ((this->ob.find("CAVOK")!=string::npos) ||
+ (this->ob.find("SKC")!=string::npos) ||
+ (this->ob.find("CLR")!=string::npos))
+ mInfo.sky=clear;
+ else
+ mInfo.sky=undef_sky;
+
+ mInfo.CB=(this->ob.find("CB")!=string::npos);
+
+
+ //Rain
+ if ((this->ob.find("DZ")!=string::npos) ||
+ (this->ob.find("RA")!=string::npos))
+ mInfo.rain=rain;
+ else if ((this->ob.find("SN")!=string::npos) ||
+ (this->ob.find("SG")!=string::npos))
+ mInfo.rain=snow;
+ else if ((this->ob.find("GS")!=string::npos) ||
+ (this->ob.find("GR")!=string::npos))
+ mInfo.rain=hail;
+ else
+ mInfo.rain=undef_rain;
+
+ //Fog
+ if ((this->ob.find("BR")!=string::npos) ||
+ (this->ob.find("FG")!=string::npos))
+ mInfo.fog=fog;
+ else if ((this->ob.find("DU")!=string::npos) ||
+ (this->ob.find("DS")!=string::npos))
+ mInfo.fog=dust;
+ else if ((this->ob.find("FC")!=string::npos) ||
+ (this->ob.find("FU")!=string::npos) ||
+ (this->ob.find("HZ")!=string::npos) ||
+ (this->ob.find("SA")!=string::npos) ||
+ (this->ob.find("SS")!=string::npos) ||
+ (this->ob.find("VA")!=string::npos))
+ mInfo.fog=other;
+ else
+ mInfo.fog=undef_fog;
+
+ // The most important for the display theme is rain, then fog and then sky conditions
+ if (mInfo.rain!=undef_rain)
+ {
+ switch (mInfo.rain)
+ {
+ case rain: theme=RAINY_THEME; break;
+ case snow: theme=SNOWY_THEME; break;
+ case hail: theme=HAIL_THEME; break;
+ default: break;
+ }
+ }
+ else if (mInfo.fog!=undef_fog)
+ {
+ switch (mInfo.fog)
+ {
+ case fog : theme=FOG_THEME; break;
+ case dust : theme=DUST_THEME; break;
+ case other: theme=PARTS_THEME; break;
+ default: break;
+ }
+ }
+ else if (mInfo.sky!=undef_sky)
+ {
+ switch (mInfo.sky)
+ {
+ case clear : theme=CLEAR_THEME; break;
+ case cloudy : theme=CLOUDY_THEME; break;
+ case brkovc : theme=BROKEN_THEME; break;
+ case tcu : theme=TCU_THEME; break;
+ default: break;
+ }
+ }
+ else
+ theme=DEFAULT_THEME; // Nothing significant found.
+}
+
+/*************************************************************
+ * Method: getInfo *
+ *************************************************************
+ * Description: *
+ * Fetch information and parse the file *
+ * *
+ * Output: *
+ * True if we downloaded it right, false if not. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * 20101031 Gaspar Fernández Bug in skt *
+ *************************************************************/
+bool localtemp::getInfo()
+{
+ char *metar_fetch; // Get Metar data URL
+ MySock *skt;
+ HTTP_Request *http;
+ string::size_type pos, pos2;
+ TKey_Value datarl;
+ this->error=0; // No error
+ this->loaded=false;
+ metar_fetch= (char*) malloc(80);
+ string tmp;
+
+ sprintf(metar_fetch, METAR_URL, this->metar.data());
+
+ skt = new MySock(metar_fetch);
+ verbsth(VERB_ASTTO, "Open connection: ");
+
+ http=skt->GetHTTPData();
+
+ delete skt; // We don't need this anymore
+
+ if (http!=NULL)
+ {
+ if (http->status==200)
+ {
+ time(&get_time); // We got the file at this moment
+ pos=0;
+
+ verbsth(VERB_ASTTO, "Get Data: ");
+
+ do
+ {
+ pos2=http->data.find("\n",pos+1);
+ if (pos==0) // Extracts the first line (Name of the Station)
+ {
+ this->long_location=http->data.substr(0, http->data.find("(",0)-1);
+ verbsth(VERB_ASTTO, "Station name: "+this->long_location);
+ }
+ if (pos2!=string::npos)
+ {
+ tmp = http->data.substr(pos,pos2-pos);
+ datarl.key=tmp.substr(0, tmp.find(":"));
+ datarl.value=tmp.substr(tmp.find(":")+1);
+ if (datarl.key=="Temperature")
+ this->set_temp(datarl.value);
+ else if (datarl.key=="Relative Humidity")
+ this->set_humidity(datarl.value);
+ else if (datarl.key=="Sky conditions")
+ this->sky=datarl.value;
+ else if (datarl.key=="ob")
+ this->ob=datarl.value;
+ // Search interesting data
+ pos=pos2+1;
+ }
+ } while (pos2!=string::npos);
+ verbsth(VERB_ASTTO, "Get ob info: ");
+
+ get_ob_info(); // Get info from the METAR string
+ this->loaded=true;
+ verbsth(VERB_ASTTO, "Close connection: ");
+
+ }
+ else
+// {
+ this->error=1; // Not found
+ // Print request
+// cout<<http->data<<endl;
+// }
+ }
+ else
+ return false; // If there is a socket error...
+
+ return true; // Everything is OK (or almost)
+
+}
diff --git a/src/localtemp.h b/src/localtemp.h
new file mode 100644
index 0000000..19173d3
--- /dev/null
+++ b/src/localtemp.h
@@ -0,0 +1,57 @@
+#include <string.h>
+#include <strings.h>
+#include "errors.h"
+
+#define METAR_URL "http://weather.noaa.gov/pub/data/observations/metar/decoded/%s.TXT"
+
+class localtemp {
+public:
+ enum ESky
+ {
+ undef_sky,
+ clear, // CAVOK, SKC, CLR
+ cloudy, // FEW, SCT
+ brkovc, // Broken, Overcast (BKN, OVC)
+ tcu // TCU (Towering CUmulus)
+ };
+ enum ERain
+ {
+ undef_rain,
+ rain, // Rainy (DZ, RA)
+ snow, // Snowy (SN, SG)
+ hail // Hail (GS, GR)
+ };
+ enum EFog
+ {
+ undef_fog,
+ fog, // (BR, FG)
+ dust, // (DU, DS)
+ other // (FC, FU, HZ, SA, SS, VA)
+ };
+
+ struct TMetar
+ {
+ ESky sky;
+ bool CB; // Cumulonimbus
+ ERain rain;
+ EFog fog;
+ };
+ std::string metar;
+ std::string location_name;
+ std::string long_location;
+ std::string ob; // ob: line, METAR info.
+ int error, celsius, fahrenheit;
+ int theme; // º theme to use
+ short humidity;
+ bool loaded;
+ string sky;
+ TMetar mInfo;
+ time_t info_time; // Time stored in file
+ time_t get_time; // Time when we got the file
+ localtemp(char* metar, char* location_name);
+ bool getInfo();
+private:
+ void set_temp(std::string temp);
+ void set_humidity(std::string hum);
+ void get_ob_info();
+};
diff --git a/src/stamp-h1 b/src/stamp-h1
new file mode 100644
index 0000000..57ea58e
--- /dev/null
+++ b/src/stamp-h1
@@ -0,0 +1 @@
+timestamp for src/config.h
diff --git a/src/strutils.cpp b/src/strutils.cpp
new file mode 100644
index 0000000..6e6a22c
--- /dev/null
+++ b/src/strutils.cpp
@@ -0,0 +1,136 @@
+ /********************************************************************************
+ * File: strutils.cpp *
+ * Date: 20080508 *
+ * Author: Gaspar Fernández (helyo@totaki.com) *
+ * *
+ * Copyright (C) 2008 Gaspar Fernández *
+ * *
+ * This program is free software: you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation, either version 3 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
+ * *
+ ********************************************************************************
+ * Description:
+ * Some functions with strings.
+ *
+ * Change History:
+ * Date Author Modification
+ *
+ ********************************************************************************/
+const std::string whiteSpaces( " \f\n\r\t\v" );
+
+/*************************************************************
+ * Functions: trimRight, trimLeft, trim *
+ *************************************************************
+ * Description: *
+ * Erases whitespaces (or any other characters) at the *
+ * beginning, at the end, and at both of one string. *
+ * Everything considered whitespace is in shiteSpaces *
+ * constant (at the top of this file) *
+ * *
+ * Input: *
+ * string& str - The strim we'd like to trim *
+ * string& trimChars - Characters we want to erase. *
+ * *
+ * Output: *
+ * string& str (trimRight, trimLeft) - Our original string *
+ * trimmed. *
+ * string (return value in trim()) - Trimmed string. *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void trimRight(string& str,
+ const string& trimChars = whiteSpaces )
+{
+ string::size_type pos = str.find_last_not_of( trimChars );
+ str.erase( pos + 1 );
+
+}
+
+void trimLeft(string& str,
+ const string& trimChars = whiteSpaces )
+{
+ string::size_type pos = str.find_first_not_of( trimChars );
+ str.erase( 0, pos );
+
+}
+
+string trim( string str, const string& trimChars = whiteSpaces )
+{
+ trimRight( str, trimChars );
+ trimLeft( str, trimChars );
+ return str;
+}
+
+/*************************************************************
+ * Function: load_str_chr *
+ *************************************************************
+ * Description: *
+ * Reserves memory for a char* that will contain the *
+ * data within a string or another *char *
+ * *
+ * *
+ * Input: *
+ * char **ptr - Where we will store the string *
+ * string str (or char* str) - Where the string is *
+ * *
+ * Output: *
+ * The string will be in char **ptr *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+void load_str_chr(char **ptr, const string str)
+{
+ *ptr=new char[str.size()+1];
+ std::strcpy(*ptr,str.data());
+}
+
+void load_str_chr(char **ptr, const char* str)
+{
+ *ptr=new char[std::strlen(str)+1];
+ std::strcpy(*ptr,str);
+}
+
+/*************************************************************
+ * Function: find_str_in_array *
+ *************************************************************
+ * Description: *
+ * Finds a str as an element in an array of char* *
+ * *
+ * Input: *
+ * const char *str - The string we want to find *
+ * const char *array - The array where the string may be *
+ * int elements - The number of strings the array has *
+ * *
+ * Output: *
+ * int - The index of the array where the string is. *
+ * If we couldn't find it, it returns -1 *
+ * *
+ * Change History: *
+ * Date Author Modification *
+ * *
+ *************************************************************/
+int find_str_in_array(const char *str, const char *array[], int elements)
+{
+ int i=0, pos=-1;
+ while ((i<elements) && (pos==-1))
+ {
+ if (std::strcmp(array[i], str)==0)
+ pos=i;
+ i++;
+ }
+ return pos;
+}