fixed bmpx crap
authorBrenden Matthews <brenden1@rty.ca>
Fri, 6 Jan 2006 23:56:12 +0000 (23:56 +0000)
committerBrenden Matthews <brenden1@rty.ca>
Fri, 6 Jan 2006 23:56:12 +0000 (23:56 +0000)
git-svn-id: https://conky.svn.sourceforge.net/svnroot/conky/trunk/conky@480 7f574dfc-610e-0410-a909-a81674777703

README
src/bmpx.c
src/conky.c

diff --git a/README b/README
index 86d1e49..6447b40 100644 (file)
--- a/README
+++ b/README
@@ -4,16 +4,16 @@ conky(1)                                                            conky(1)
 
 NAME
        conky - A system monitor for X originally based on the torsmo code, but
-       more kickass. It just keeps on given’er. Yeah.
+       more kickass. It just keeps on given'er. Yeah.
 
 SYNOPSIS
        conky [options]
 
 DESCRIPTION
        Conky is a system monitor for X originally based on  the         torsmo  code.
-       Since  it’s original conception, Conky has changed a fair bit from it’s
+       Since  it's original conception, Conky has changed a fair bit from it's
        predecessor.  Conky can display just about  anything,  either  on  your
-       root  desktop  or in it’s own window.  Conky has many built-in objects,
+       root  desktop  or in it's own window.  Conky has many built-in objects,
        as well as the ability to execute programs and  scripts,         then  display
        the output from stdout.
 
@@ -28,11 +28,11 @@ COMPILING
        libraries installed.  This should be  a package  along  the  lines  of
        "libx11-dev or xorg-x11-dev".
 
-       Gentoo users -- Conky is in Gentoo’s Portage... simply use "emerge app-
+       Gentoo users -- Conky is in Gentoo's Portage... simply use "emerge app-
        admin/conky" for installation.  There is         also  usually  an  up-to-date
-       ebuild within Conky’s package or in CVS.
+       ebuild within Conky's package or in CVS.
 
-       Debian,etc.  users  --  Conky will be in Debian’s repositories soon (by
+       Debian,etc.  users  --  Conky will be in Debian's repositories soon (by
        mid-September, hopefully), and then Ubuntu  shortly  thereafter.         Until
        then, "dpkg -i" the .deb package to install.
 
@@ -43,7 +43,7 @@ COMPILING
 
        ./configure           --prefix=/usr            --mandir=/usr/share/man
        --infodir=/usr/share/info     --datadir=/usr/share    --sysconfdir=/etc
-       --localstatedir=/var/lib          --enable-xft   --enable-seti   --enable-dou‐
+       --localstatedir=/var/lib          --enable-xft   --enable-seti   --enable-dou-
        ble-buffer    --enable-own-window   --enable-proc-uptime          --enable-mpd
        --enable-mldonkey    --enable-x11    --enable-portmon    --enable-bmpx
        --enable-infopipe
@@ -54,14 +54,14 @@ COMPILING
 
        src/conky
 
-       Conky probably doesn’t compile with compilers other than gcc  and  icc.
-       It  doesn’t  compile  with C89 compiler and not even with pure C99.  It
-       uses a few things that might not exist: strdup(),  strcasecmp(),         strn‐
+       Conky probably doesn't compile with compilers other than gcc  and  icc.
+       It  doesn't  compile  with C89 compiler and not even with pure C99.  It
+       uses a few things that might not exist: strdup(),  strcasecmp(),         strn-
        casecmp(),  optarg  variable  with getopt() and long long (not in C89).
-       Crashes in file system statistics stuff when compiled with icc, I don’t
+       Crashes in file system statistics stuff when compiled with icc, I don't
        know exactly why.
 
-       You  can disable ’drawing to own window’ feature in case you don’t need
+       You  can disable 'drawing to own window' feature in case you don't need
        it by passing --disable-own-window to configure -script.
 
 
@@ -72,14 +72,14 @@ YOU SHOULD KNOW
        rest of Conky.
 
        If  you do use them, please do not complain about memory or CPU usage,
-       unless you think something’s seriously wrong (mem leak, etc.).
+       unless you think something's seriously wrong (mem leak, etc.).
 
        An easy way to force Conky to reload your ~/.conkyrc: "killall -SIGUSR1
        conky". Saves you the trouble of having to kill and then restart.
 
        IMPORTANT:  For previous Conky users, Conky 1.3 no longer supports the
        metar stuff.  mdsplib was causing  way  too  many  problems.  Hopefully
-       there’ll be a better solution in Conky 2.x...
+       there'll be a better solution in Conky 2.x...
 
 OPTIONS
        Command line  options override configurations defined in configuration
@@ -114,7 +114,7 @@ OPTIONS
 
 
        -t TEXT
-             Text to render, remember single quotes, like -t ’ $uptime ’
+             Text to render, remember single quotes, like -t ' $uptime '
 
 
        -u SECONDS
@@ -136,14 +136,14 @@ OPTIONS
 CONFIGURATION SETTINGS
        Default configuration file  is  $HOME/.conkyrc  (can  be         changed  from
        conky.c among  other  things).  See conkyrc.sample. If installing from
-       Debian package, this should be in /usr/share/doc/conky/examples ("gun‐
+       Debian package, this should be in /usr/share/doc/conky/examples ("gun-
        zip conkyrc.sample.gz" to get conkyrc.sample).
 
        You  might  want         to copy it to $HOME/.conkyrc and then start modifying
        it.  Other configs can be found at http://conky.sf.net
 
        alignment
-             Aligned position on screen, may  be  top_left,  top_right,  bot‐
+             Aligned position on screen, may  be  top_left,  top_right,  bot-
              tom_left, bottom_right, or none
 
 
@@ -173,7 +173,7 @@ CONFIGURATION SETTINGS
 
 
        default_shade_color
-             Default shading color and border’s shading color
+             Default shading color and border's shading color
 
 
        default_outline_color
@@ -181,8 +181,8 @@ CONFIGURATION SETTINGS
 
 
        double_buffer
-             Use the Xdbe extension? (eliminates flicker) It is highly recom‐
-             mended to use own window with this one so double buffer won’t be
+             Use the Xdbe extension? (eliminates flicker) It is highly recom-
+             mended to use own window with this one so double buffer won't be
              so big.
 
 
@@ -330,7 +330,7 @@ CONFIGURATION SETTINGS
 VARIABLES
        Colors  are  parsed using XParsecolor(), there might be a list of them:
        /usr/X11R6/lib/X11/rgb.txt.   Also,   http://sedition.com/perl/rgb.html
-       [http://sedition.com/perl/rgb.html].  Color can be also in #rrggbb for‐
+       [http://sedition.com/perl/rgb.html].  Color can be also in #rrggbb for-
        mat (hex).  Note that when displaying bytes, power is 1024 and not 1000
        so 1M really means 1024*1024 bytes and not 1000*1000.
 
@@ -430,7 +430,7 @@ VARIABLES
 
 
        cpubar (cpu number) (height),(width)
-             Bar  that shows CPU usage, height is bar’s height in pixels. See
+             Bar  that shows CPU usage, height is bar's height in pixels. See
              $cpu for more info on SMP.
 
 
@@ -467,8 +467,8 @@ VARIABLES
 
 
        exec command
-             Executes a shell command and displays the output in conky. warn‐
-             ing: this takes a lot more resources than other  variables.  I’d
+             Executes a shell command and displays the output in conky. warn-
+             ing: this takes a lot more resources than other  variables.  I'd
              recommend coding wanted behaviour in C and posting a patch.
 
 
@@ -483,7 +483,7 @@ VARIABLES
 
 
        execi interval command
-             Same  as exec but with specific interval. Interval can’t be less
+             Same  as exec but with specific interval. Interval can't be less
              than update_interval in configuration. See also $texeci
 
 
@@ -540,7 +540,7 @@ VARIABLES
 
        head logfile lines (interval)
              Displays  first  N lines of supplied text text file. If interval
-             is not supplied, Conky assumes 2x Conky’s interval.  Max        of  30
+             is not supplied, Conky assumes 2x Conky's interval.  Max  of  30
              lines can be displayed, or until the text buffer is filled.
 
 
@@ -585,7 +585,7 @@ VARIABLES
 
        i8k_left_fan_rpm
              If running the i8k kernel driver for Inspiron laptops,  displays
-             the  left  fan’s        rate of rotation, in revolutions per minute as
+             the  left  fan's  rate of rotation, in revolutions per minute as
              listed in /proc/i8k. Beware, some laptops i8k reports these fans
              in reverse order.
 
@@ -599,7 +599,7 @@ VARIABLES
 
        i8k_right_fan_rpm
              If running the i8k kernel driver for Inspiron laptops,  displays
-             the  right  fan’s rate of rotation, in revolutions per minute as
+             the  right  fan's rate of rotation, in revolutions per minute as
              listed in /proc/i8k. Beware, some laptops i8k reports these fans
              in reverse order.
 
@@ -740,7 +740,7 @@ VARIABLES
 
 
        mpd_bar (height),(width)
-             Bar of mpd’s progress
+             Bar of mpd's progress
 
 
        mpd_bitrate
@@ -756,19 +756,19 @@ VARIABLES
 
 
        mpd_vol
-             MPD’s volume
+             MPD's volume
 
 
        mpd_elapsed
-             Song’s elapsed time
+             Song's elapsed time
 
 
        mpd_length
-             Song’s length
+             Song's length
 
 
        mpd_percent
-             Percent of song’s progress
+             Percent of song's progress
 
 
        mpd_random
@@ -861,7 +861,7 @@ VARIABLES
 
              Examples:
 
-             ${tcp_portmon 6881 6999 count} - displays the number of  connec‐
+             ${tcp_portmon 6881 6999 count} - displays the number of  connec-
              tions in the bittorrent port range
 
              ${tcp_portmon  22 22 rip 0} - displays the remote host ip of the
@@ -880,7 +880,7 @@ VARIABLES
              name of the fifteenth connection in the range of all ports
 
              Note that port monitor variables which share the same port range
-             actually refer to the same monitor, so many references to a sin‐
+             actually refer to the same monitor, so many references to a sin-
              gle port range for different items and different indexes all use
              the  same monitor internally. In other words, the program avoids
              creating redundant monitors.
@@ -888,7 +888,7 @@ VARIABLES
        texeci interval command
              Runs a command at an interval inside a thread and  displays  the
              output.  Same  as  $execi,  except  the  command is run inside a
-             thread. Use this if you have a slow script to keep Conky  updat‐
+             thread. Use this if you have a slow script to keep Conky  updat-
              ing.  You should make the interval slightly longer then the time
              it takes your script to execute. For  example,  if  you  have  a
              script  that  take  5  seconds  to  execute, you should make the
@@ -901,18 +901,18 @@ VARIABLES
 
        tail logfile lines (interval)
              Displays last N lines of supplied text text file. If interval is
-             not supplied, Conky assumes 2x Conky’s interval. Max of 30 lines
+             not supplied, Conky assumes 2x Conky's interval. Max of 30 lines
              can be displayed, or until the text buffer is filled.
 
 
        time (format)
-             Local time, see man strftime to get more information about  for‐
+             Local time, see man strftime to get more information about  for-
              mat
 
 
        totaldown net
              Total  download, overflows at 4 GB on Linux with 32-bit arch and
-             there doesn’t seem to be a way to know how  many        times  it  has
+             there doesn't seem to be a way to know how  many  times  it  has
              already done that before conky has started.
 
 
@@ -975,7 +975,7 @@ VARIABLES
 
 
 EXAMPLES
-       conky -t ’${time %D %H:%m}’ -o -u 30
+       conky -t '${time %D %H:%m}' -o -u 30
              Start Conky in its own window with date and clock as text and 30
              sec update interval.
 
@@ -986,9 +986,9 @@ FILES
        ~/.conkyrc default configuration file
 
 BUGS
-       Drawing to root or some other desktop window directly doesn’t work with
-       all window managers. Especially doesn’t work well with Gnome and it has
-       been reported that it doesn’t work with KDE  either.  Nautilus  can  be
+       Drawing to root or some other desktop window directly doesn't work with
+       all window managers. Especially doesn't work well with Gnome and it has
+       been reported that it doesn't work with KDE  either.  Nautilus  can  be
        disabled         from  drawing  to  desktop with program gconf-editor. Uncheck
        show_desktop in /apps/nautilus/preferences/.  There  is -w  switch  in
        Conky  to  set  some  specific window id. You might find xwininfo -tree
@@ -998,13 +998,13 @@ BUGS
 SEE ALSO
        http://conky.sourceforge.net [http://conky.sourceforge.net]
 
-       http://www.sourceforge.net/projects/conky          [http://www.source‐
+       http://www.sourceforge.net/projects/conky          [http://www.source-
        forge.net/projects/conky]
 
        #conky on irc.freenode.net
 
 AUTHORS
-       The Conky dev team. What’s up now!
+       The Conky dev team. What's up now!
 
 
 
index 9738c87..a2346a4 100644 (file)
@@ -64,9 +64,21 @@ void update_bmpx()
                                DBUS_TYPE_G_STRING_VALUE_HASHTABLE,
                                &metadata,
                                G_TYPE_INVALID)) {
-                       current_info->bmpx.title = g_value_get_string(g_hash_table_lookup(metadata, "title"));
-                       current_info->bmpx.artist = g_value_get_string(g_hash_table_lookup(metadata, "artist"));
-                       current_info->bmpx.album = g_value_get_string(g_hash_table_lookup(metadata, "album"));
+                       if (current_info->bmpx.title) {
+                               free(current_info->bmpx.title);
+                               current_info->bmpx.title = 0;
+                       }
+                       if (current_info->bmpx.artist) {
+                               free(current_info->bmpx.artist);
+                               current_info->bmpx.artist = 0;
+                       }
+                       if (current_info->bmpx.album) {
+                               free(current_info->bmpx.album);
+                               current_info->bmpx.album = 0;
+                       }
+                       current_info->bmpx.title = g_value_dup_string(g_hash_table_lookup(metadata, "title"));
+                       current_info->bmpx.artist = g_value_dup_string(g_hash_table_lookup(metadata, "artist"));
+                       current_info->bmpx.album = g_value_dup_string(g_hash_table_lookup(metadata, "album"));
                        current_info->bmpx.bitrate = g_value_get_int(g_hash_table_lookup(metadata, "bitrate"));
                        current_info->bmpx.track = g_value_get_int(g_hash_table_lookup(metadata, "track-number"));
                } else {
@@ -82,6 +94,18 @@ fail:
                if (error)
                        g_error_free(error);
                current_info->bmpx.title = unknown;
+               if (current_info->bmpx.title) {
+                       free(current_info->bmpx.title);
+                       current_info->bmpx.title = 0;
+               }
+               if (current_info->bmpx.artist) {
+                       free(current_info->bmpx.artist);
+                       current_info->bmpx.artist = 0;
+               }
+               if (current_info->bmpx.album) {
+                       free(current_info->bmpx.album);
+                       current_info->bmpx.album = 0;
+               }
                current_info->bmpx.artist = unknown;
                current_info->bmpx.album = unknown;
                current_info->bmpx.bitrate = 0;
index 1c05869..7b9acaa 100644 (file)
@@ -1813,16 +1813,22 @@ int a = stippled_borders, b = 1;
 #endif
 #ifdef BMPX
        OBJ(bmpx_title, INFO_BMPX)
+               memset(&(info.bmpx), 0, sizeof(struct bmpx_s));
        END
        OBJ(bmpx_artist, INFO_BMPX)
+               memset(&(info.bmpx), 0, sizeof(struct bmpx_s));
        END
        OBJ(bmpx_album, INFO_BMPX)
+               memset(&(info.bmpx), 0, sizeof(struct bmpx_s));
        END
        OBJ(bmpx_track, INFO_BMPX)
+               memset(&(info.bmpx), 0, sizeof(struct bmpx_s));
        END
        OBJ(bmpx_uri, INFO_BMPX)
+               memset(&(info.bmpx), 0, sizeof(struct bmpx_s));
        END
        OBJ(bmpx_bitrate, INFO_BMPX)
+               memset(&(info.bmpx), 0, sizeof(struct bmpx_s));
        END
 #endif
 #ifdef INFOPIPE