Module Name:    xsrc
Committed By:   mrg
Date:           Mon Jul 11 08:03:31 UTC 2022

Modified Files:
        xsrc/external/mit/xclipboard/dist: compile
        xsrc/external/mit/xclock/dist: Clock.c
Removed Files:
        xsrc/external/mit/bitmap/dist: Dashes Down Excl FlipHoriz FlipVert Fold
            Left Right RotateLeft RotateRight Stipple Term Up
        xsrc/external/mit/iceauth/dist: README
        xsrc/external/mit/xclipboard/dist: README

Log Message:
merge bitmap 1.1.0, iceauth 1.0.9, xclipboard 1.1.4, and xclock 1.1.1.


To generate a diff of this commit:
cvs rdiff -u -r1.1.1.1 -r0 xsrc/external/mit/bitmap/dist/Dashes \
    xsrc/external/mit/bitmap/dist/Down xsrc/external/mit/bitmap/dist/Excl \
    xsrc/external/mit/bitmap/dist/FlipHoriz \
    xsrc/external/mit/bitmap/dist/FlipVert xsrc/external/mit/bitmap/dist/Fold \
    xsrc/external/mit/bitmap/dist/Left xsrc/external/mit/bitmap/dist/Right \
    xsrc/external/mit/bitmap/dist/RotateLeft \
    xsrc/external/mit/bitmap/dist/RotateRight \
    xsrc/external/mit/bitmap/dist/Stipple xsrc/external/mit/bitmap/dist/Term \
    xsrc/external/mit/bitmap/dist/Up
cvs rdiff -u -r1.1.1.2 -r0 xsrc/external/mit/iceauth/dist/README
cvs rdiff -u -r1.1.1.2 -r0 xsrc/external/mit/xclipboard/dist/README
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xclipboard/dist/compile
cvs rdiff -u -r1.3 -r1.4 xsrc/external/mit/xclock/dist/Clock.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: xsrc/external/mit/xclipboard/dist/compile
diff -u xsrc/external/mit/xclipboard/dist/compile:1.3 xsrc/external/mit/xclipboard/dist/compile:1.4
--- xsrc/external/mit/xclipboard/dist/compile:1.3	Mon Mar 17 09:20:46 2014
+++ xsrc/external/mit/xclipboard/dist/compile	Mon Jul 11 08:03:31 2022
@@ -1,9 +1,9 @@
 #! /bin/sh
 # Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2012-10-14.11; # UTC
+scriptversion=2018-03-07.03; # UTC
 
-# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Copyright (C) 1999-2021 Free Software Foundation, Inc.
 # Written by Tom Tromey <tro...@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -17,7 +17,7 @@ scriptversion=2012-10-14.11; # UTC
 # 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/>.
+# along with this program.  If not, see <https://www.gnu.org/licenses/>.
 
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
@@ -53,7 +53,7 @@ func_file_conv ()
 	  MINGW*)
 	    file_conv=mingw
 	    ;;
-	  CYGWIN*)
+	  CYGWIN* | MSYS*)
 	    file_conv=cygwin
 	    ;;
 	  *)
@@ -67,7 +67,7 @@ func_file_conv ()
 	mingw/*)
 	  file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
 	  ;;
-	cygwin/*)
+	cygwin/* | msys/*)
 	  file=`cygpath -m "$file" || echo "$file"`
 	  ;;
 	wine/*)
@@ -255,7 +255,8 @@ EOF
     echo "compile $scriptversion"
     exit $?
     ;;
-  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe | \
+  icl | *[/\\]icl | icl.exe | *[/\\]icl.exe )
     func_cl_wrapper "$@"      # Doesn't return...
     ;;
 esac
@@ -339,9 +340,9 @@ exit $ret
 # Local Variables:
 # mode: shell-script
 # sh-indentation: 2
-# eval: (add-hook 'write-file-hooks 'time-stamp)
+# eval: (add-hook 'before-save-hook 'time-stamp)
 # time-stamp-start: "scriptversion="
 # time-stamp-format: "%:y-%02m-%02d.%02H"
-# time-stamp-time-zone: "UTC"
+# time-stamp-time-zone: "UTC0"
 # time-stamp-end: "; # UTC"
 # End:

Index: xsrc/external/mit/xclock/dist/Clock.c
diff -u xsrc/external/mit/xclock/dist/Clock.c:1.3 xsrc/external/mit/xclock/dist/Clock.c:1.4
--- xsrc/external/mit/xclock/dist/Clock.c:1.3	Mon Jul 15 04:54:47 2019
+++ xsrc/external/mit/xclock/dist/Clock.c	Mon Jul 11 08:03:31 2022
@@ -25,7 +25,6 @@ Except as contained in this notice, the 
 used in advertising or otherwise to promote the sale, use or other dealings
 in this Software without prior written authorization from The Open Group.
 
-
 Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts.
 
                         All Rights Reserved
@@ -76,9 +75,10 @@ SOFTWARE.
 /* $XFree86: xc/programs/xclock/Clock.c,v 3.25 2003/07/04 16:24:30 eich Exp $ */
 
 #ifdef HAVE_CONFIG_H
-# include "config.h"
+#include "config.h"
 #endif
 
+#define _GNU_SOURCE
 #include <X11/Xlib.h>
 #include <X11/StringDefs.h>
 #include <X11/IntrinsicP.h>
@@ -87,6 +87,7 @@ SOFTWARE.
 #include <stdio.h>
 #include <X11/Xos.h>
 #include <X11/Xaw/XawInit.h>
+#include <math.h>
 #if !defined(NO_I18N) && defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
 #include <iconv.h>
 #include <langinfo.h>
@@ -108,15 +109,14 @@ SOFTWARE.
 #endif
 
 #ifndef NO_I18N
-#include <stdlib.h> /* for getenv() */
+#include <stdlib.h>             /* for getenv() */
 #include <locale.h>
-extern Boolean no_locale; /* if True, use old (unlocalized) behaviour */
+extern Boolean no_locale;       /* if True, use old (unlocalized) behaviour */
 #endif
 
-
 /* Private Definitions */
 
-#define VERTICES_IN_HANDS	6	/* to draw triangle */
+#define VERTICES_IN_HANDS	6       /* to draw triangle */
 #define PI			3.14159265358979
 #define TWOPI			(2. * PI)
 
@@ -134,7 +134,6 @@ extern Boolean no_locale; /* if True, us
 #define min(a, b) ((a) < (b) ? (a) : (b))
 /* #define abs(a) ((a) < 0 ? -(a) : (a)) */
 
-
 /* Initialization of defaults */
 
 #define offset(field) XtOffsetOf(ClockRec, clock.field)
@@ -142,138 +141,139 @@ extern Boolean no_locale; /* if True, us
 
 static XtResource resources[] = {
     {XtNwidth, XtCWidth, XtRDimension, sizeof(Dimension),
-	goffset(width), XtRImmediate, (XtPointer) 0},
+     goffset(width), XtRImmediate, (XtPointer) 0},
     {XtNheight, XtCHeight, XtRDimension, sizeof(Dimension),
-	goffset(height), XtRImmediate, (XtPointer) 0},
+     goffset(height), XtRImmediate, (XtPointer) 0},
     {XtNupdate, XtCInterval, XtRFloat, sizeof(float),
-        offset(update), XtRString, "60.0" },
+     offset(update), XtRString, "60.0"},
 #ifndef XRENDER
     {XtNforeground, XtCForeground, XtRPixel, sizeof(Pixel),
-        offset(fgpixel), XtRString, XtDefaultForeground},
+     offset(fgpixel), XtRString, XtDefaultForeground},
 #endif
     {XtNhand, XtCForeground, XtRPixel, sizeof(Pixel),
-        offset(Hdpixel), XtRString, XtDefaultForeground},
+     offset(Hdpixel), XtRString, XtDefaultForeground},
     {XtNhighlight, XtCForeground, XtRPixel, sizeof(Pixel),
-        offset(Hipixel), XtRString, XtDefaultForeground},
+     offset(Hipixel), XtRString, XtDefaultForeground},
     {XtNutime, XtCBoolean, XtRBoolean, sizeof(Boolean),
-	offset(utime), XtRImmediate, (XtPointer) FALSE},
+     offset(utime), XtRImmediate, (XtPointer) FALSE},
     {XtNanalog, XtCBoolean, XtRBoolean, sizeof(Boolean),
-        offset(analog), XtRImmediate, (XtPointer) TRUE},
+     offset(analog), XtRImmediate, (XtPointer) TRUE},
     {XtNtwentyfour, XtCBoolean, XtRBoolean, sizeof(Boolean),
-        offset(twentyfour), XtRImmediate, (XtPointer) TRUE},
+     offset(twentyfour), XtRImmediate, (XtPointer) TRUE},
     {XtNbrief, XtCBoolean, XtRBoolean, sizeof(Boolean),
-        offset(brief), XtRImmediate, (XtPointer) FALSE},
+     offset(brief), XtRImmediate, (XtPointer) FALSE},
     {XtNstrftime, XtCString, XtRString, sizeof(String),
-        offset(strftime), XtRString, ""},
+     offset(strftime), XtRString, ""},
     {XtNchime, XtCBoolean, XtRBoolean, sizeof(Boolean),
-	offset(chime), XtRImmediate, (XtPointer) FALSE },
+     offset(chime), XtRImmediate, (XtPointer) FALSE},
     {XtNpadding, XtCMargin, XtRInt, sizeof(int),
-        offset(padding), XtRImmediate, (XtPointer) 8},
+     offset(padding), XtRImmediate, (XtPointer) 8},
     {XtNfont, XtCFont, XtRFontStruct, sizeof(XFontStruct *),
-        offset(font), XtRString, XtDefaultFont},
+     offset(font), XtRString, XtDefaultFont},
 #ifndef NO_I18N
-     {XtNfontSet, XtCFontSet, XtRFontSet, sizeof(XFontSet),
-        offset(fontSet), XtRString, XtDefaultFontSet},
+    {XtNfontSet, XtCFontSet, XtRFontSet, sizeof(XFontSet),
+     offset(fontSet), XtRString, XtDefaultFontSet},
 #endif
-    {XtNbackingStore, XtCBackingStore, XtRBackingStore, sizeof (int),
-    	offset (backing_store), XtRString, "default"},
+    {XtNbackingStore, XtCBackingStore, XtRBackingStore, sizeof(int),
+     offset(backing_store), XtRString, "default"},
 #ifdef XRENDER
     {XtNrender, XtCBoolean, XtRBoolean, sizeof(Boolean),
-	offset(render), XtRImmediate, (XtPointer) TRUE },
+     offset(render), XtRImmediate, (XtPointer) TRUE},
     {XtNbuffer, XtCBoolean, XtRBoolean, sizeof(Boolean),
-	offset(buffer), XtRImmediate, (XtPointer) TRUE },
+     offset(buffer), XtRImmediate, (XtPointer) TRUE},
     {XtNsharp, XtCBoolean, XtRBoolean, sizeof(Boolean),
-	offset(sharp), XtRImmediate, (XtPointer) FALSE },
+     offset(sharp), XtRImmediate, (XtPointer) FALSE},
     {XtNforeground, XtCForeground, XtRXftColor, sizeof(XftColor),
-        offset(fg_color), XtRString, XtDefaultForeground},
+     offset(fg_color), XtRString, XtDefaultForeground},
     {XtNhourColor, XtCForeground, XtRXftColor, sizeof(XftColor),
-	offset(hour_color), XtRString, XtDefaultForeground},
+     offset(hour_color), XtRString, XtDefaultForeground},
     {XtNminuteColor, XtCForeground, XtRXftColor, sizeof(XftColor),
-	offset(min_color), XtRString, XtDefaultForeground},
+     offset(min_color), XtRString, XtDefaultForeground},
     {XtNsecondColor, XtCForeground, XtRXftColor, sizeof(XftColor),
-	offset(sec_color), XtRString, XtDefaultForeground},
+     offset(sec_color), XtRString, XtDefaultForeground},
     {XtNmajorColor, XtCForeground, XtRXftColor, sizeof(XftColor),
-	offset(major_color), XtRString, XtDefaultForeground},
+     offset(major_color), XtRString, XtDefaultForeground},
     {XtNminorColor, XtCForeground, XtRXftColor, sizeof(XftColor),
-	offset(minor_color), XtRString, XtDefaultForeground},
-    {XtNface, XtCFace, XtRXftFont, sizeof (XftFont *),
-	offset (face), XtRString, ""},
+     offset(minor_color), XtRString, XtDefaultForeground},
+    {XtNface, XtCFace, XtRXftFont, sizeof(XftFont *),
+     offset(face), XtRString, ""},
 #endif
 };
 
 #undef offset
 #undef goffset
 
-static void ClassInitialize ( void );
-static void Initialize ( Widget request, Widget new, ArgList args,
-			 Cardinal *num_args );
-static void Realize ( Widget gw, XtValueMask *valueMask,
-		      XSetWindowAttributes *attrs );
-static void Destroy ( Widget gw );
-static void Resize ( Widget gw );
-static void Redisplay ( Widget gw, XEvent *event, Region region );
-static void clock_tic ( XtPointer client_data, XtIntervalId *id );
-static void erase_hands ( ClockWidget w, struct tm *tm );
-static void ClockAngle ( int tick_units, double *sinp, double *cosp );
-static void DrawLine ( ClockWidget w, Dimension blank_length,
-		       Dimension length, int tick_units );
-static void DrawHand ( ClockWidget w, Dimension length, Dimension width,
-		       int tick_units );
-static void DrawSecond ( ClockWidget w, Dimension length, Dimension width,
-			 Dimension offset, int tick_units );
-static void SetSeg ( ClockWidget w, int x1, int y1, int x2, int y2 );
-static void DrawClockFace ( ClockWidget w );
-static int clock_round ( double x );
-static Boolean SetValues ( Widget gcurrent, Widget grequest, Widget gnew,
-			   ArgList args, Cardinal *num_args );
+static void ClassInitialize(void);
+static void Initialize(Widget request, Widget new, ArgList args,
+                       Cardinal * num_args);
+static void Realize(Widget gw, XtValueMask * valueMask,
+                    XSetWindowAttributes * attrs);
+static void Destroy(Widget gw);
+static void Resize(Widget gw);
+static void Redisplay(Widget gw, XEvent * event, Region region);
+static void clock_tic(XtPointer client_data, XtIntervalId * id);
+static void erase_hands(ClockWidget w, struct tm *tm);
+static void ClockAngle(double tick_units, double *sinp, double *cosp);
+static void DrawLine(ClockWidget w, Dimension blank_length,
+                     Dimension length, int tick_units);
+static void DrawHand(ClockWidget w, Dimension length, Dimension width,
+                     int tick_units);
+static void DrawSecond(ClockWidget w, Dimension length, Dimension width,
+                       Dimension offset, int tick_units);
+static void SetSeg(ClockWidget w, int x1, int y1, int x2, int y2);
+static void DrawClockFace(ClockWidget w);
+static int clock_round(double x);
+static Boolean SetValues(Widget gcurrent, Widget grequest, Widget gnew,
+                         ArgList args, Cardinal * num_args);
 #if !defined(NO_I18N) && defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
 static char *clock_to_utf8(const char *str, int in_len);
 #endif
 
 ClockClassRec clockClassRec = {
-    { /* core fields */
-    /* superclass		*/	(WidgetClass) &simpleClassRec,
-    /* class_name		*/	"Clock",
-    /* widget_size		*/	sizeof(ClockRec),
-    /* class_initialize		*/	ClassInitialize,
-    /* class_part_initialize	*/	NULL,
-    /* class_inited		*/	FALSE,
-    /* initialize		*/	Initialize,
-    /* initialize_hook		*/	NULL,
-    /* realize			*/	Realize,
-    /* actions			*/	NULL,
-    /* num_actions		*/	0,
-    /* resources		*/	resources,
-    /* resource_count		*/	XtNumber(resources),
-    /* xrm_class		*/	NULLQUARK,
-    /* compress_motion		*/	TRUE,
-    /* compress_exposure	*/	XtExposeCompressMaximal,
-    /* compress_enterleave	*/	TRUE,
-    /* visible_interest		*/	FALSE,
-    /* destroy			*/	Destroy,
-    /* resize			*/	Resize,
-    /* expose			*/	Redisplay,
-    /* set_values		*/	SetValues,
-    /* set_values_hook		*/	NULL,
-    /* set_values_almost	*/	XtInheritSetValuesAlmost,
-    /* get_values_hook		*/	NULL,
-    /* accept_focus		*/	NULL,
-    /* version			*/	XtVersion,
-    /* callback_private		*/	NULL,
-    /* tm_table			*/	NULL,
-    /* query_geometry           */	XtInheritQueryGeometry,
-    /* display_accelerator      */	XtInheritDisplayAccelerator,
-    /* extension                */	NULL
-    },
-    { /* simple fields */
-    /* change_sensitive         */      XtInheritChangeSensitive
-    },
-    { /* clock fields */
-    /* ignore                   */      0
-    }
+    {                           /* core fields */
+     /* superclass               */ (WidgetClass) & simpleClassRec,
+     /* class_name               */ "Clock",
+     /* widget_size              */ sizeof(ClockRec),
+     /* class_initialize         */ ClassInitialize,
+     /* class_part_initialize    */ NULL,
+     /* class_inited             */ FALSE,
+     /* initialize               */ Initialize,
+     /* initialize_hook          */ NULL,
+     /* realize                  */ Realize,
+     /* actions                  */ NULL,
+     /* num_actions              */ 0,
+     /* resources                */ resources,
+     /* resource_count           */ XtNumber(resources),
+     /* xrm_class                */ NULLQUARK,
+     /* compress_motion          */ TRUE,
+     /* compress_exposure        */ XtExposeCompressMaximal,
+     /* compress_enterleave      */ TRUE,
+     /* visible_interest         */ FALSE,
+     /* destroy                  */ Destroy,
+     /* resize                   */ Resize,
+     /* expose                   */ Redisplay,
+     /* set_values               */ SetValues,
+     /* set_values_hook          */ NULL,
+     /* set_values_almost        */ XtInheritSetValuesAlmost,
+     /* get_values_hook          */ NULL,
+     /* accept_focus             */ NULL,
+     /* version                  */ XtVersion,
+     /* callback_private         */ NULL,
+     /* tm_table                 */ NULL,
+     /* query_geometry           */ XtInheritQueryGeometry,
+     /* display_accelerator      */ XtInheritDisplayAccelerator,
+     /* extension                */ NULL
+     },
+    {                           /* simple fields */
+     /* change_sensitive         */ XtInheritChangeSensitive,
+     /* extension                */ NULL
+     },
+    {                           /* clock fields */
+     /* ignore                   */ 0
+     }
 };
 
-WidgetClass clockWidgetClass = (WidgetClass) &clockClassRec;
+WidgetClass clockWidgetClass = (WidgetClass) & clockClassRec;
 
 /****************************************************************
  *
@@ -281,44 +281,42 @@ WidgetClass clockWidgetClass = (WidgetCl
  *
  ****************************************************************/
 #ifndef USE_XAW_PIXMAP_CVT
-static void CvtStringToPixmap(
-    XrmValue*           args,
-    Cardinal*           num_args,
-    XrmValuePtr         fromVal,
-    XrmValuePtr         toVal
-    )
+static void
+CvtStringToPixmap(XrmValue * args,
+                  Cardinal * num_args, XrmValuePtr fromVal, XrmValuePtr toVal)
 {
-    static Pixmap	pmap;
+    static Pixmap pmap;
     Pixmap shapemask;
-    char *name = (char *)fromVal->addr;
+    char *name = (char *) fromVal->addr;
     Screen *screen;
     Display *dpy;
 
     if (*num_args != 1)
-     XtErrorMsg("wrongParameters","cvtStringToPixmap","XtToolkitError",
-             "String to pixmap conversion needs screen argument",
-              (String *)NULL, (Cardinal *)NULL);
+        XtErrorMsg("wrongParameters", "cvtStringToPixmap", "XtToolkitError",
+                   "String to pixmap conversion needs screen argument",
+                   (String *) NULL, (Cardinal *) NULL);
 
     if (strcmp(name, "None") == 0) {
         pmap = None;
-    } else {
-	screen = *((Screen **) args[0].addr);
-	dpy = DisplayOfScreen(screen);
+    }
+    else {
+        screen = *((Screen **) args[0].addr);
+        dpy = DisplayOfScreen(screen);
 
-	XpmReadFileToPixmap(dpy, RootWindowOfScreen(screen), name, &pmap,
-	  &shapemask, NULL);
+        XpmReadFileToPixmap(dpy, RootWindowOfScreen(screen), name, &pmap,
+                            &shapemask, NULL);
     }
 
     (*toVal).size = sizeof(Pixmap);
-    (*toVal).addr = (XPointer) &pmap ;
+    (*toVal).addr = (XPointer) & pmap;
 }
 #endif
 
 #ifdef XRENDER
 static XtConvertArgRec xftColorConvertArgs[] = {
-    {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.screen),
+    {XtWidgetBaseOffset, (XtPointer) XtOffsetOf(WidgetRec, core.screen),
      sizeof(Screen *)},
-    {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.colormap),
+    {XtWidgetBaseOffset, (XtPointer) XtOffsetOf(WidgetRec, core.colormap),
      sizeof(Colormap)}
 };
 
@@ -343,144 +341,132 @@ static XtConvertArgRec xftColorConvertAr
 	}
 
 static void
-XmuFreeXftColor (XtAppContext app, XrmValuePtr toVal, XtPointer closure,
-		 XrmValuePtr args, Cardinal *num_args)
+XmuFreeXftColor(XtAppContext app, XrmValuePtr toVal, XtPointer closure,
+                XrmValuePtr args, Cardinal * num_args)
 {
-    Screen	*screen;
-    Colormap	colormap;
-    XftColor	*color;
+    Screen *screen;
+    Colormap colormap;
+    XftColor *color;
 
-    if (*num_args != 2)
-    {
-	XtAppErrorMsg (app,
-		       "freeXftColor", "wrongParameters",
-		       "XtToolkitError",
-		       "Freeing an XftColor requires screen and colormap arguments",
-		       (String *) NULL, (Cardinal *)NULL);
-	return;
+    if (*num_args != 2) {
+        XtAppErrorMsg(app,
+                      "freeXftColor", "wrongParameters",
+                      "XtToolkitError",
+                      "Freeing an XftColor requires screen and colormap arguments",
+                      (String *) NULL, (Cardinal *) NULL);
+        return;
     }
 
     screen = *((Screen **) args[0].addr);
     colormap = *((Colormap *) args[1].addr);
     color = (XftColor *) toVal->addr;
-    XftColorFree (DisplayOfScreen (screen),
-		  DefaultVisual (DisplayOfScreen (screen),
-				 XScreenNumberOfScreen (screen)),
-		  colormap, color);
+    XftColorFree(DisplayOfScreen(screen),
+                 DefaultVisual(DisplayOfScreen(screen),
+                               XScreenNumberOfScreen(screen)), colormap, color);
 }
 
 static Boolean
-XmuCvtStringToXftColor(Display *dpy,
-		       XrmValue *args, Cardinal *num_args,
-		       XrmValue *fromVal, XrmValue *toVal,
-		       XtPointer *converter_data)
-{
-    char	    *spec;
-    XRenderColor    renderColor;
-    XftColor	    xftColor;
-    Screen	    *screen;
-    Colormap	    colormap;
+XmuCvtStringToXftColor(Display * dpy,
+                       XrmValue * args, Cardinal * num_args,
+                       XrmValue * fromVal, XrmValue * toVal,
+                       XtPointer * converter_data)
+{
+    char *spec;
+    XRenderColor renderColor;
+    XftColor xftColor;
+    Screen *screen;
+    Colormap colormap;
 
-    if (*num_args != 2)
-    {
-	XtAppErrorMsg (XtDisplayToApplicationContext (dpy),
-		       "cvtStringToXftColor", "wrongParameters",
-		       "XtToolkitError",
-		       "String to render color conversion needs screen and colormap arguments",
-		       (String *) NULL, (Cardinal *)NULL);
-	return False;
+    if (*num_args != 2) {
+        XtAppErrorMsg(XtDisplayToApplicationContext(dpy),
+                      "cvtStringToXftColor", "wrongParameters",
+                      "XtToolkitError",
+                      "String to render color conversion needs screen and colormap arguments",
+                      (String *) NULL, (Cardinal *) NULL);
+        return False;
     }
 
     screen = *((Screen **) args[0].addr);
     colormap = *((Colormap *) args[1].addr);
 
     spec = (char *) fromVal->addr;
-    if (strcasecmp (spec, XtDefaultForeground) == 0)
-    {
-	renderColor.red = 0;
-	renderColor.green = 0;
-	renderColor.blue = 0;
-	renderColor.alpha = 0xffff;
-    }
-    else if (strcasecmp (spec, XtDefaultBackground) == 0)
-    {
-	renderColor.red = 0xffff;
-	renderColor.green = 0xffff;
-	renderColor.blue = 0xffff;
-	renderColor.alpha = 0xffff;
-    }
-    else if (!XRenderParseColor (dpy, spec, &renderColor))
-	return False;
-    if (!XftColorAllocValue (dpy,
-			     DefaultVisual (dpy,
-					    XScreenNumberOfScreen (screen)),
-			     colormap,
-			     &renderColor,
-			     &xftColor))
-	return False;
+    if (strcasecmp(spec, XtDefaultForeground) == 0) {
+        renderColor.red = 0;
+        renderColor.green = 0;
+        renderColor.blue = 0;
+        renderColor.alpha = 0xffff;
+    }
+    else if (strcasecmp(spec, XtDefaultBackground) == 0) {
+        renderColor.red = 0xffff;
+        renderColor.green = 0xffff;
+        renderColor.blue = 0xffff;
+        renderColor.alpha = 0xffff;
+    }
+    else if (!XRenderParseColor(dpy, spec, &renderColor))
+        return False;
+    if (!XftColorAllocValue(dpy,
+                            DefaultVisual(dpy,
+                                          XScreenNumberOfScreen(screen)),
+                            colormap, &renderColor, &xftColor))
+        return False;
 
-    donestr (XftColor, xftColor, XtRXftColor);
+    donestr(XftColor, xftColor, XtRXftColor);
 }
 
 static void
-XmuFreeXftFont (XtAppContext app, XrmValuePtr toVal, XtPointer closure,
-		XrmValuePtr args, Cardinal *num_args)
+XmuFreeXftFont(XtAppContext app, XrmValuePtr toVal, XtPointer closure,
+               XrmValuePtr args, Cardinal * num_args)
 {
-    Screen  *screen;
+    Screen *screen;
     XftFont *font;
 
-    if (*num_args != 1)
-    {
-	XtAppErrorMsg (app,
-		       "freeXftFont", "wrongParameters",
-		       "XtToolkitError",
-		       "Freeing an XftFont requires screen argument",
-		       (String *) NULL, (Cardinal *)NULL);
-	return;
+    if (*num_args != 1) {
+        XtAppErrorMsg(app,
+                      "freeXftFont", "wrongParameters",
+                      "XtToolkitError",
+                      "Freeing an XftFont requires screen argument",
+                      (String *) NULL, (Cardinal *) NULL);
+        return;
     }
 
     screen = *((Screen **) args[0].addr);
     font = *((XftFont **) toVal->addr);
     if (font)
-	XftFontClose (DisplayOfScreen (screen), font);
+        XftFontClose(DisplayOfScreen(screen), font);
 }
 
 static Boolean
-XmuCvtStringToXftFont(Display *dpy,
-		      XrmValue *args, Cardinal *num_args,
-		      XrmValue *fromVal, XrmValue *toVal,
-		      XtPointer *converter_data)
+XmuCvtStringToXftFont(Display * dpy,
+                      XrmValue * args, Cardinal * num_args,
+                      XrmValue * fromVal, XrmValue * toVal,
+                      XtPointer * converter_data)
 {
-    char    *name;
+    char *name;
     XftFont *font;
-    Screen  *screen;
+    Screen *screen;
 
-    if (*num_args != 1)
-    {
-	XtAppErrorMsg (XtDisplayToApplicationContext (dpy),
-		       "cvtStringToXftFont", "wrongParameters",
-		       "XtToolkitError",
-		       "String to XftFont conversion needs screen argument",
-		       (String *) NULL, (Cardinal *)NULL);
-	return False;
+    if (*num_args != 1) {
+        XtAppErrorMsg(XtDisplayToApplicationContext(dpy),
+                      "cvtStringToXftFont", "wrongParameters",
+                      "XtToolkitError",
+                      "String to XftFont conversion needs screen argument",
+                      (String *) NULL, (Cardinal *) NULL);
+        return False;
     }
 
     screen = *((Screen **) args[0].addr);
     name = (char *) fromVal->addr;
 
-    font = XftFontOpenName (dpy,
-			    XScreenNumberOfScreen (screen),
-			    name);
-    if (font)
-    {
-	donestr (XftFont *, font, XtRXftFont);
+    font = XftFontOpenName(dpy, XScreenNumberOfScreen(screen), name);
+    if (font) {
+        donestr(XftFont *, font, XtRXftFont);
     }
     XtDisplayStringConversionWarning(dpy, (char *) fromVal->addr, XtRXftFont);
     return False;
 }
 
 static XtConvertArgRec xftFontConvertArgs[] = {
-    {XtWidgetBaseOffset, (XtPointer)XtOffsetOf(WidgetRec, core.screen),
+    {XtWidgetBaseOffset, (XtPointer) XtOffsetOf(WidgetRec, core.screen),
      sizeof(Screen *)},
 };
 
@@ -493,254 +479,261 @@ ClassInitialize(void)
     XawInitializeWidgetSet();
 #else
     static XtConvertArgRec scrnConvertArg[] = {
-	{XtBaseOffset, (XtPointer) XtOffset(Widget, core.screen),
-	 sizeof(Screen *)}
+        {XtBaseOffset, (XtPointer) XtOffset(Widget, core.screen),
+         sizeof(Screen *)}
     };
-    XtAddConverter( XtRString, XtRPixmap, CvtStringToPixmap,
-	      	    scrnConvertArg, XtNumber(scrnConvertArg));
+    XtAddConverter(XtRString, XtRPixmap, CvtStringToPixmap,
+                   scrnConvertArg, XtNumber(scrnConvertArg));
 #endif
-    XtAddConverter( XtRString, XtRBackingStore, XmuCvtStringToBackingStore,
-		    NULL, 0 );
+    XtAddConverter(XtRString, XtRBackingStore, XmuCvtStringToBackingStore,
+                   NULL, 0);
 #ifdef XRENDER
-    XtSetTypeConverter (XtRString, XtRXftColor,
-			XmuCvtStringToXftColor,
-			xftColorConvertArgs, XtNumber(xftColorConvertArgs),
-			XtCacheByDisplay, XmuFreeXftColor);
-    XtSetTypeConverter (XtRString, XtRXftFont,
-			XmuCvtStringToXftFont,
-			xftFontConvertArgs, XtNumber(xftFontConvertArgs),
-			XtCacheByDisplay, XmuFreeXftFont);
+    XtSetTypeConverter(XtRString, XtRXftColor,
+                       XmuCvtStringToXftColor,
+                       xftColorConvertArgs, XtNumber(xftColorConvertArgs),
+                       XtCacheByDisplay, XmuFreeXftColor);
+    XtSetTypeConverter(XtRString, XtRXftFont,
+                       XmuCvtStringToXftFont,
+                       xftFontConvertArgs, XtNumber(xftFontConvertArgs),
+                       XtCacheByDisplay, XmuFreeXftFont);
 #endif
 }
 
 static char *
-TimeString (ClockWidget w, struct tm *tm)
+TimeString(ClockWidget w, struct tm *tm)
 {
-   if (w->clock.brief)
-   {
-      if (w->clock.twentyfour)
-      {
-	  static char brief[6];
-	  snprintf (brief, sizeof(brief), "%02d:%02d", tm->tm_hour, tm->tm_min);
-	  return brief;
-      }
-      else
-      {
-	 static char brief[9];
-	 int hour = tm->tm_hour % 12;
-	 if (!hour) hour = 12;
-	 snprintf (brief, sizeof(brief), "%02d:%02d %cM", hour, tm->tm_min,
-	    tm->tm_hour >= 12 ? 'P' : 'A');
-	 return brief;
-      }
-   }
-   else if (w->clock.utime)
-   {
-      static char utime[35];
-      Time_t tsec;
-      tsec = time(NULL);
-      snprintf (utime, sizeof(utime), "%10lu seconds since Epoch",
-                (unsigned long)tsec);
-      return utime;
-   } else if (*w->clock.strftime) {
-     /*Note: this code is probably excessively paranoid
-       about buffer overflow.  The extra size 10 padding
-       is also meant as a further guard against programmer
-       error, although it is a little controversial*/
-     static char ctime[STRFTIME_BUFF_SIZE+10];
-     ctime[0] = ctime[STRFTIME_BUFF_SIZE] = '\0';
-     if (0 < strftime (ctime, STRFTIME_BUFF_SIZE-1,w->clock.strftime, tm)) {
-       ctime[STRFTIME_BUFF_SIZE-1] = '\0';
-       return ctime;
-     } else {
-       return asctime (tm);
-     }
-   }
-   else if (w->clock.twentyfour)
-      return asctime (tm);
-   else
-   {
-      static char long12[28];
-      strftime(long12, sizeof long12, "%a %b %d %I:%M:%S %p %Y", tm);
-      return long12;
-   }
+    if (w->clock.brief) {
+        if (w->clock.twentyfour) {
+            static char brief[6];
+
+            snprintf(brief, sizeof(brief), "%02d:%02d", tm->tm_hour,
+                     tm->tm_min);
+            return brief;
+        }
+        else {
+            static char brief[9];
+            int hour = tm->tm_hour % 12;
+
+            if (!hour)
+                hour = 12;
+            snprintf(brief, sizeof(brief), "%02d:%02d %cM", hour, tm->tm_min,
+                     tm->tm_hour >= 12 ? 'P' : 'A');
+            return brief;
+        }
+    }
+    else if (w->clock.utime) {
+        static char utime[35];
+        Time_t tsec;
+
+        tsec = time(NULL);
+        snprintf(utime, sizeof(utime), "%10lu seconds since Epoch",
+                 (unsigned long) tsec);
+        return utime;
+    }
+    else if (*w->clock.strftime) {
+        /*Note: this code is probably excessively paranoid
+           about buffer overflow.  The extra size 10 padding
+           is also meant as a further guard against programmer
+           error, although it is a little controversial */
+        static char ctime[STRFTIME_BUFF_SIZE + 10];
+
+        ctime[0] = ctime[STRFTIME_BUFF_SIZE] = '\0';
+        if (0 < strftime(ctime, STRFTIME_BUFF_SIZE - 1, w->clock.strftime, tm)) {
+            ctime[STRFTIME_BUFF_SIZE - 1] = '\0';
+            return ctime;
+        }
+        else {
+            return asctime(tm);
+        }
+    }
+    else if (w->clock.twentyfour)
+        return asctime(tm);
+    else {
+        static char long12[28];
+
+        strftime(long12, sizeof long12, "%a %b %d %I:%M:%S %p %Y", tm);
+        return long12;
+    }
 }
 
 /* ARGSUSED */
 static void
-Initialize (Widget request, Widget new, ArgList args, Cardinal *num_args)
+Initialize(Widget request, Widget new, ArgList args, Cardinal * num_args)
 {
-    ClockWidget w = (ClockWidget)new;
-    XtGCMask		valuemask;
-    XGCValues	myXGCV;
+    ClockWidget w = (ClockWidget) new;
+    XtGCMask valuemask;
+    XGCValues myXGCV;
     int min_height, min_width;
 
     valuemask = GCForeground | GCBackground | GCFont | GCLineWidth;
     if (w->clock.font != NULL)
         myXGCV.font = w->clock.font->fid;
     else
-        valuemask &= ~GCFont;	/* use server default font */
+        valuemask &= ~GCFont;   /* use server default font */
 
     min_width = min_height = ANALOG_SIZE_DEFAULT;
-    if(!w->clock.analog) {
-       char *str;
-       struct tm tm;
-       struct timeval tv;
-       int len;
+    if (!w->clock.analog) {
+        char *str;
+        struct tm tm;
+        struct timeval tv;
+        int len;
 
 #ifndef NO_I18N
-       w->clock.utf8 = False;
+        w->clock.utf8 = False;
 
-       if (!no_locale) {
-	   char *time_locale = setlocale(LC_CTYPE, NULL);
+        if (!no_locale) {
+            char *time_locale = setlocale(LC_CTYPE, NULL);
 
-	   if (strstr(time_locale, "UTF-8") || strstr(time_locale, "utf8")) {
-	       w->clock.utf8 = True;
-	   }
-
-	   /*
-	    * initialize time format from CFTIME if set, otherwise
-	    * default to "%c".  This emulates ascftime, but we use
-	    * strftime so we can limit the string buffer size to
-	    * avoid possible buffer overflow.
-	    */
-	   if ((w->clock.strftime == NULL) || (w->clock.strftime[0] == 0)) {
-	       w->clock.strftime = getenv("CFTIME");
-	       if (w->clock.strftime == NULL) {
-		   w->clock.strftime = "%c";
-	       }
-	   }
-       }
-#endif /* NO_I18N */
-
-       X_GETTIMEOFDAY(&tv);
-       tm = *localtime(&tv.tv_sec);
-       str = TimeString (w, &tm);
-       len = strlen(str);
-       if (len && str[len - 1] == '\n') str[--len] = '\0';
+            if (strstr(time_locale, "UTF-8") || strstr(time_locale, "utf8")) {
+                w->clock.utf8 = True;
+            }
+
+            /*
+             * initialize time format from CFTIME if set, otherwise
+             * default to "%c".  This emulates ascftime, but we use
+             * strftime so we can limit the string buffer size to
+             * avoid possible buffer overflow.
+             */
+            if ((w->clock.strftime == NULL) || (w->clock.strftime[0] == 0)) {
+                w->clock.strftime = getenv("CFTIME");
+                if (w->clock.strftime == NULL) {
+                    w->clock.strftime = "%c";
+                }
+            }
+        }
+#endif                          /* NO_I18N */
+
+        X_GETTIMEOFDAY(&tv);
+        tm = *localtime(&tv.tv_sec);
+        str = TimeString(w, &tm);
+        len = strlen(str);
+        if (len && str[len - 1] == '\n')
+            str[--len] = '\0';
 
 #ifdef XRENDER
-       if (w->clock.render)
-       {
-	XGlyphInfo  extents;
+        if (w->clock.render) {
+            XGlyphInfo extents;
+
 #ifndef NO_I18N
-# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
-	char *utf8_str;
-# endif
-	if (w->clock.utf8)
-	    XftTextExtentsUtf8 (XtDisplay (w), w->clock.face,
-				(FcChar8 *) str, len, &extents);
-# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
-	else if ((utf8_str = clock_to_utf8(str, len)) != NULL) {
-	        XftTextExtentsUtf8 (XtDisplay (w), w->clock.face,
-			(FcChar8 *)utf8_str, strlen(utf8_str), &extents);
-		free(utf8_str);
-	}
-# endif
-	else
+#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
+            char *utf8_str;
 #endif
-	    XftTextExtents8 (XtDisplay (w), w->clock.face,
-			     (FcChar8 *) str, len, &extents);
-	min_width = extents.xOff + 2 * w->clock.padding;
-	min_height = w->clock.face->ascent + w->clock.face->descent +
-		     2 * w->clock.padding;
-        /*fprintf(stderr, "render min_width %i\n", min_width);*/
-       }
-       else
+            if (w->clock.utf8)
+                XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
+                                   (FcChar8 *) str, len, &extents);
+#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
+            else if ((utf8_str = clock_to_utf8(str, len)) != NULL) {
+                XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
+                                   (FcChar8 *) utf8_str, strlen(utf8_str),
+                                   &extents);
+                free(utf8_str);
+            }
+#endif
+            else
+#endif
+                XftTextExtents8(XtDisplay(w), w->clock.face,
+                                (FcChar8 *) str, len, &extents);
+            min_width = extents.xOff + 2 * w->clock.padding;
+            min_height = w->clock.face->ascent + w->clock.face->descent +
+                2 * w->clock.padding;
+            /*fprintf(stderr, "render min_width %i\n", min_width); */
+        }
+        else
 #endif
-       { /* not XRENDER block */
+        {                       /* not XRENDER block */
 #ifndef NO_I18N
-	 if (!no_locale) {
-	   XFontSetExtents *fse;
+            if (!no_locale) {
+                XFontSetExtents *fse;
 
-	   if(w->clock.fontSet == NULL) {
-	       char **missing, *default_str;
-	       int n_missing;
-	       w->clock.fontSet = XCreateFontSet( XtDisplay(w),
-		 XtDefaultFontSet,
-		 &missing,
-		 &n_missing,
-		 &default_str);
-	   }
-	   if (w->clock.fontSet != NULL) {
-	       /* don't free this... it's freed with the XFontSet. */
-	       fse = XExtentsOfFontSet(w->clock.fontSet);
-
-	       min_width = XmbTextEscapement(w->clock.fontSet,str,len) +
-		 2 * w->clock.padding;
-	       min_height = fse->max_logical_extent.height +
-		 3 * w->clock.padding;
-	       /*fprintf(stderr, "fontset min_width %i\n", min_width);*/
-	   } else {
-	       no_locale = True;
-	   }
-	 }
-
-	 if (no_locale)
-#endif /* NO_I18N */
-	 {
-	   if (w->clock.font == NULL)
-	       w->clock.font = XQueryFont( XtDisplay(w),
-					   XGContextFromGC(
-					    DefaultGCOfScreen(XtScreen(w))) );
-	   min_width = XTextWidth(w->clock.font, str, len) +
-	       2 * w->clock.padding;
-	   min_height = w->clock.font->ascent +
-	       w->clock.font->descent + 2 * w->clock.padding;
-	   /*fprintf(stderr, "font min_width %i\n", min_width);*/
-	 }
-       } /* not XRENDER block */
+                if (w->clock.fontSet == NULL) {
+                    char **missing, *default_str;
+                    int n_missing;
+
+                    w->clock.fontSet = XCreateFontSet(XtDisplay(w),
+                                                      XtDefaultFontSet,
+                                                      &missing,
+                                                      &n_missing, &default_str);
+                }
+                if (w->clock.fontSet != NULL) {
+                    /* don't free this... it's freed with the XFontSet. */
+                    fse = XExtentsOfFontSet(w->clock.fontSet);
+
+                    min_width = XmbTextEscapement(w->clock.fontSet, str, len) +
+                        2 * w->clock.padding;
+                    min_height = fse->max_logical_extent.height +
+                        3 * w->clock.padding;
+                    /*fprintf(stderr, "fontset min_width %i\n", min_width); */
+                }
+                else {
+                    no_locale = True;
+                }
+            }
+
+            if (no_locale)
+#endif                          /* NO_I18N */
+            {
+                if (w->clock.font == NULL)
+                    w->clock.font = XQueryFont(XtDisplay(w),
+                                               XGContextFromGC(DefaultGCOfScreen
+                                                               (XtScreen(w))));
+                min_width =
+                    XTextWidth(w->clock.font, str, len) + 2 * w->clock.padding;
+                min_height =
+                    w->clock.font->ascent + w->clock.font->descent +
+                    2 * w->clock.padding;
+                /*fprintf(stderr, "font min_width %i\n", min_width); */
+            }
+        }                       /* not XRENDER block */
     }
     if (w->core.width == 0)
-	w->core.width = min_width;
+        w->core.width = min_width;
     if (w->core.height == 0)
-	w->core.height = min_height;
+        w->core.height = min_height;
 
-    myXGCV.foreground = ClockFgPixel (w);
+    myXGCV.foreground = ClockFgPixel(w);
     myXGCV.background = w->core.background_pixel;
     if (w->clock.font != NULL)
-	myXGCV.font = w->clock.font->fid;
+        myXGCV.font = w->clock.font->fid;
     else
-	valuemask &= ~GCFont;	/* use server default font */
+        valuemask &= ~GCFont;   /* use server default font */
     myXGCV.line_width = 0;
-    w->clock.myGC = XtGetGC((Widget)w, valuemask, &myXGCV);
+    w->clock.myGC = XtGetGC((Widget) w, valuemask, &myXGCV);
 
     valuemask = GCForeground | GCLineWidth | GCGraphicsExposures;
     myXGCV.foreground = w->core.background_pixel;
     if (w->core.background_pixmap != XtUnspecifiedPixmap) {
-	myXGCV.tile = w->core.background_pixmap;
-	myXGCV.fill_style = FillTiled;
-	valuemask |= (GCTile | GCFillStyle);
+        myXGCV.tile = w->core.background_pixmap;
+        myXGCV.fill_style = FillTiled;
+        valuemask |= (GCTile | GCFillStyle);
     }
     myXGCV.graphics_exposures = False;
-    w->clock.EraseGC = XtGetGC((Widget)w, valuemask, &myXGCV);
+    w->clock.EraseGC = XtGetGC((Widget) w, valuemask, &myXGCV);
     valuemask &= ~(GCTile | GCFillStyle);
 
     myXGCV.foreground = w->clock.Hipixel;
-    w->clock.HighGC = XtGetGC((Widget)w, valuemask, &myXGCV);
+    w->clock.HighGC = XtGetGC((Widget) w, valuemask, &myXGCV);
 
     valuemask = GCForeground;
     myXGCV.foreground = w->clock.Hdpixel;
-    w->clock.HandGC = XtGetGC((Widget)w, valuemask, &myXGCV);
+    w->clock.HandGC = XtGetGC((Widget) w, valuemask, &myXGCV);
 
     /* make invalid update's use a default */
-    /*if (w->clock.update <= 0) w->clock.update = 60;*/
-    w->clock.show_second_hand = (abs((int) w->clock.update) <= SECOND_HAND_TIME);
+    /*if (w->clock.update <= 0) w->clock.update = 60; */
+    w->clock.show_second_hand =
+        (abs((int) w->clock.update) <= SECOND_HAND_TIME);
     w->clock.numseg = 0;
     w->clock.interval_id = 0;
-    memset (&w->clock.otm, '\0', sizeof (w->clock.otm));
+    memset(&w->clock.otm, '\0', sizeof(w->clock.otm));
 #ifdef XRENDER
     {
-	int major, minor;
+        int major, minor;
 
-	if (XRenderQueryVersion (XtDisplay (w), &major, &minor) &&
-	    (major > 0 ||
-	     (major == 0 && minor >= 4)))
-	{
-	    w->clock.can_polygon = True;
-	}
-	else
-	    w->clock.can_polygon = False;
+        if (XRenderQueryVersion(XtDisplay(w), &major, &minor) &&
+            (major > 0 || (major == 0 && minor >= 4))) {
+            w->clock.can_polygon = True;
+        }
+        else
+            w->clock.can_polygon = False;
     }
     w->clock.pixmap = 0;
     w->clock.draw = NULL;
@@ -753,100 +746,96 @@ Initialize (Widget request, Widget new, 
 
 #ifdef XRENDER
 static void
-RenderPrepare (ClockWidget  w, XftColor *color)
+RenderPrepare(ClockWidget w, XftColor * color)
 {
-    if (!w->clock.draw)
-    {
-	Drawable    d = XtWindow (w);
-	if (w->clock.buffer)
-	{
-	    if (!w->clock.pixmap)
-	    {
-		Arg arg[1];
-		w->clock.pixmap = XCreatePixmap (XtDisplay (w), d,
-						 w->core.width,
-						 w->core.height,
-						 w->core.depth);
-		arg[0].name = XtNbackgroundPixmap;
-		arg[0].value = 0;
-		XtSetValues ((Widget) w, arg, 1);
-	    }
-	    d = w->clock.pixmap;
-	}
+    if (!w->clock.draw) {
+        Drawable d = XtWindow(w);
 
-	w->clock.draw = XftDrawCreate (XtDisplay (w), d,
-				       DefaultVisual (XtDisplay (w),
-						      DefaultScreen(XtDisplay (w))),
-				       w->core.colormap);
-	w->clock.picture = XftDrawPicture (w->clock.draw);
+        if (w->clock.buffer) {
+            if (!w->clock.pixmap) {
+                Arg arg[1];
+
+                w->clock.pixmap = XCreatePixmap(XtDisplay(w), d,
+                                                w->core.width,
+                                                w->core.height, w->core.depth);
+                arg[0].name = XtNbackgroundPixmap;
+                arg[0].value = 0;
+                XtSetValues((Widget) w, arg, 1);
+            }
+            d = w->clock.pixmap;
+        }
+
+        w->clock.draw = XftDrawCreate(XtDisplay(w), d,
+                                      DefaultVisual(XtDisplay(w),
+                                                    DefaultScreen(XtDisplay
+                                                                  (w))),
+                                      w->core.colormap);
+        w->clock.picture = XftDrawPicture(w->clock.draw);
     }
     if (color)
-	w->clock.fill_picture = XftDrawSrcPicture (w->clock.draw, color);
+        w->clock.fill_picture = XftDrawSrcPicture(w->clock.draw, color);
 }
 
 static void
-RenderClip (ClockWidget w)
+RenderClip(ClockWidget w)
 {
-    Region	r;
-    Drawable	d;
+    Region r;
+    Drawable d;
 
-    RenderPrepare (w, NULL);
+    RenderPrepare(w, NULL);
     if (w->clock.buffer)
-	d = w->clock.pixmap;
+        d = w->clock.pixmap;
     else
-	d = XtWindow (w);
-    XFillRectangle (XtDisplay (w), d, w->clock.EraseGC,
-		    w->clock.damage.x,
-		    w->clock.damage.y,
-		    w->clock.damage.width,
-		    w->clock.damage.height);
-    r = XCreateRegion ();
-    XUnionRectWithRegion (&w->clock.damage,
-			  r, r);
-    XftDrawSetClip (w->clock.draw, r);
-    XDestroyRegion (r);
+        d = XtWindow(w);
+    XFillRectangle(XtDisplay(w), d, w->clock.EraseGC,
+                   w->clock.damage.x,
+                   w->clock.damage.y,
+                   w->clock.damage.width, w->clock.damage.height);
+    r = XCreateRegion();
+    XUnionRectWithRegion(&w->clock.damage, r, r);
+    XftDrawSetClip(w->clock.draw, r);
+    XDestroyRegion(r);
 }
 
 static void
-RenderTextBounds (ClockWidget w, char *str, int off, int len,
-		  XRectangle *bounds, int *xp, int *yp)
+RenderTextBounds(ClockWidget w, char *str, int off, int len,
+                 XRectangle * bounds, int *xp, int *yp)
 {
-    XGlyphInfo  head, tail;
-    int	    x, y;
+    XGlyphInfo head, tail;
+    int x, y;
 
 #ifndef NO_I18N
-# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
+#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
     char *utf8_str;
-# endif
-    if (w->clock.utf8)
-    {
-	XftTextExtentsUtf8 (XtDisplay (w), w->clock.face,
-			    (FcChar8 *) str, off, &head);
-	XftTextExtentsUtf8 (XtDisplay (w), w->clock.face,
-			    (FcChar8 *) str + off, len - off, &tail);
-    }
-# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
-    else if ((utf8_str = clock_to_utf8(str, off)) != NULL)
-    {
-	XftTextExtentsUtf8 (XtDisplay (w), w->clock.face,
-			    (FcChar8 *)utf8_str, strlen(utf8_str), &head);
-	free(utf8_str);
-	if ((utf8_str = clock_to_utf8(str+off, len-off)) != NULL) {
-	  XftTextExtentsUtf8 (XtDisplay (w), w->clock.face,
-			      (FcChar8 *)utf8_str, strlen(utf8_str), &tail);
-	  free(utf8_str);
-	} else
-	  goto fallback;
+#endif
+    if (w->clock.utf8) {
+        XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
+                           (FcChar8 *) str, off, &head);
+        XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
+                           (FcChar8 *) str + off, len - off, &tail);
+    }
+#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
+    else if ((utf8_str = clock_to_utf8(str, off)) != NULL) {
+        XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
+                           (FcChar8 *) utf8_str, strlen(utf8_str), &head);
+        free(utf8_str);
+        if ((utf8_str = clock_to_utf8(str + off, len - off)) != NULL) {
+            XftTextExtentsUtf8(XtDisplay(w), w->clock.face,
+                               (FcChar8 *) utf8_str, strlen(utf8_str), &tail);
+            free(utf8_str);
+        }
+        else
+            goto fallback;
     }
-# endif
+#endif
     else
 #endif
     {
-    fallback:
-	XftTextExtents8 (XtDisplay (w), w->clock.face, (FcChar8 *) str,
-			 off, &head);
-	XftTextExtents8 (XtDisplay (w), w->clock.face, (FcChar8 *) str + off,
-			 len - off, &tail);
+ fallback:
+        XftTextExtents8(XtDisplay(w), w->clock.face, (FcChar8 *) str,
+                        off, &head);
+        XftTextExtents8(XtDisplay(w), w->clock.face, (FcChar8 *) str + off,
+                        len - off, &tail);
     }
 
     /*
@@ -861,41 +850,43 @@ RenderTextBounds (ClockWidget w, char *s
     bounds->y = y - tail.y - 1;
     bounds->width = tail.width + 2;
     bounds->height = tail.height + 2;
-    if (xp) *xp = x;
-    if (yp) *yp = y;
+    if (xp)
+        *xp = x;
+    if (yp)
+        *yp = y;
 }
 
 static void
-RenderUpdateRectBounds (XRectangle *damage, XRectangle *bounds)
-{
-    int	    x1 = bounds->x;
-    int	    y1 = bounds->y;
-    int	    x2 = bounds->x + bounds->width;
-    int	    y2 = bounds->y + bounds->height;
-    int	    d_x1 = damage->x;
-    int	    d_y1 = damage->y;
-    int	    d_x2 = damage->x + damage->width;
-    int	    d_y2 = damage->y + damage->height;
-
-    if (x1 == x2)
-    {
-	x1 = d_x1;
-	x2 = d_x2;
-    }
-    else
-    {
-	if (d_x1 < x1) x1 = d_x1;
-	if (d_x2 > x2) x2 = d_x2;
-    }
-    if (y1 == y2)
-    {
-	y1 = d_y1;
-	y2 = d_y2;
-    }
-    else
-    {
-	if (d_y1 < y1) y1 = d_y1;
-	if (d_y2 > y2) y2 = d_y2;
+RenderUpdateRectBounds(XRectangle * damage, XRectangle * bounds)
+{
+    int x1 = bounds->x;
+    int y1 = bounds->y;
+    int x2 = bounds->x + bounds->width;
+    int y2 = bounds->y + bounds->height;
+    int d_x1 = damage->x;
+    int d_y1 = damage->y;
+    int d_x2 = damage->x + damage->width;
+    int d_y2 = damage->y + damage->height;
+
+    if (x1 == x2) {
+        x1 = d_x1;
+        x2 = d_x2;
+    }
+    else {
+        if (d_x1 < x1)
+            x1 = d_x1;
+        if (d_x2 > x2)
+            x2 = d_x2;
+    }
+    if (y1 == y2) {
+        y1 = d_y1;
+        y2 = d_y2;
+    }
+    else {
+        if (d_y1 < y1)
+            y1 = d_y1;
+        if (d_y2 > y2)
+            y2 = d_y2;
     }
 
     bounds->x = x1;
@@ -905,16 +896,16 @@ RenderUpdateRectBounds (XRectangle *dama
 }
 
 static Boolean
-RenderRectIn (XRectangle *rect, XRectangle *bounds)
+RenderRectIn(XRectangle * rect, XRectangle * bounds)
 {
-    int	    x1 = bounds->x;
-    int	    y1 = bounds->y;
-    int	    x2 = bounds->x + bounds->width;
-    int	    y2 = bounds->y + bounds->height;
-    int	    r_x1 = rect->x;
-    int	    r_y1 = rect->y;
-    int	    r_x2 = rect->x + rect->width;
-    int	    r_y2 = rect->y + rect->height;
+    int x1 = bounds->x;
+    int y1 = bounds->y;
+    int x2 = bounds->x + bounds->width;
+    int y2 = bounds->y + bounds->height;
+    int r_x1 = rect->x;
+    int r_y1 = rect->y;
+    int r_x2 = rect->x + rect->width;
+    int r_y2 = rect->y + rect->height;
 
     return r_x1 < x2 && x1 < r_x2 && r_y1 < y2 && y1 < r_y2;
 }
@@ -926,29 +917,32 @@ RenderRectIn (XRectangle *rect, XRectang
 #define YCoord(y,w) ((y) * (w)->clock.y_scale + (w)->clock.y_off)
 
 static void
-RenderUpdateBounds (XPointDouble *points, int npoints, XRectangle *bounds)
+RenderUpdateBounds(XPointDouble * points, int npoints, XRectangle * bounds)
 {
-    int	    x1 = bounds->x;
-    int	    y1 = bounds->y;
-    int	    x2 = bounds->x + bounds->width;
-    int	    y2 = bounds->y + bounds->height;
-
-    while (npoints--)
-    {
-	int	    r_x1 = points[0].x;
-	int	    r_y1 = points[0].y;
-	int	    r_x2 = points[0].x + 1;
-	int	    r_y2 = points[0].y + 1;
-
-	if (x1 == x2)
-	    x2 = x1 = r_x1;
-	if (y1 == y2)
-	    y2 = y1 = r_y1;
-	if (r_x1 < x1) x1 = r_x1;
-	if (r_y1 < y1) y1 = r_y1;
-	if (r_x2 > x2) x2 = r_x2;
-	if (r_y2 > y2) y2 = r_y2;
-	points++;
+    int x1 = bounds->x;
+    int y1 = bounds->y;
+    int x2 = bounds->x + bounds->width;
+    int y2 = bounds->y + bounds->height;
+
+    while (npoints--) {
+        int r_x1 = points[0].x;
+        int r_y1 = points[0].y;
+        int r_x2 = points[0].x + 1;
+        int r_y2 = points[0].y + 1;
+
+        if (x1 == x2)
+            x2 = x1 = r_x1;
+        if (y1 == y2)
+            y2 = y1 = r_y1;
+        if (r_x1 < x1)
+            x1 = r_x1;
+        if (r_y1 < y1)
+            y1 = r_y1;
+        if (r_x2 > x2)
+            x2 = r_x2;
+        if (r_y2 > y2)
+            y2 = r_y2;
+        points++;
     }
     bounds->x = x1;
     bounds->y = y1;
@@ -957,38 +951,36 @@ RenderUpdateBounds (XPointDouble *points
 }
 
 static Boolean
-RenderCheckBounds (XPointDouble *points, int npoints, XRectangle *bounds)
+RenderCheckBounds(XPointDouble * points, int npoints, XRectangle * bounds)
 {
-    int	    x1 = bounds->x;
-    int	    y1 = bounds->y;
-    int	    x2 = bounds->x + bounds->width;
-    int	    y2 = bounds->y + bounds->height;
-
-    while (npoints--)
-    {
-	if (x1 <= points->x && points->x <= x2 &&
-	    y1 <= points->y && points->y <= y2)
-	    return True;
-	points++;
+    int x1 = bounds->x;
+    int y1 = bounds->y;
+    int x2 = bounds->x + bounds->width;
+    int y2 = bounds->y + bounds->height;
+
+    while (npoints--) {
+        if (x1 <= points->x && points->x <= x2 &&
+            y1 <= points->y && points->y <= y2)
+            return True;
+        points++;
     }
     return False;
 }
 
 static void
-RenderUpdate (ClockWidget w)
+RenderUpdate(ClockWidget w)
 {
-    if (w->clock.buffer && w->clock.pixmap)
-    {
-	XCopyArea (XtDisplay (w), w->clock.pixmap,
-		   XtWindow (w), w->clock.EraseGC,
-		   w->clock.damage.x, w->clock.damage.y,
-		   w->clock.damage.width, w->clock.damage.height,
-		   w->clock.damage.x, w->clock.damage.y);
+    if (w->clock.buffer && w->clock.pixmap) {
+        XCopyArea(XtDisplay(w), w->clock.pixmap,
+                  XtWindow(w), w->clock.EraseGC,
+                  w->clock.damage.x, w->clock.damage.y,
+                  w->clock.damage.width, w->clock.damage.height,
+                  w->clock.damage.x, w->clock.damage.y);
     }
 }
 
 static void
-RenderResetBounds (XRectangle *bounds)
+RenderResetBounds(XRectangle * bounds)
 {
     bounds->x = 0;
     bounds->y = 0;
@@ -997,64 +989,62 @@ RenderResetBounds (XRectangle *bounds)
 }
 
 static void
-RenderLine (ClockWidget w, XDouble x1, XDouble y1, XDouble x2, XDouble y2,
-	    XftColor *color,
-	    Boolean draw)
-{
-    XPointDouble    poly[4];
-    XDouble	    dx = (x2 - x1);
-    XDouble	    dy = (y2 - y1);
-    XDouble	    len = sqrt (dx*dx + dy*dy);
-    XDouble	    ldx = (LINE_WIDTH/2.0) * dy / len;
-    XDouble	    ldy = (LINE_WIDTH/2.0) * dx / len;
-
-    poly[0].x = XCoord (x1 + ldx, w);
-    poly[0].y = YCoord (y1 - ldy, w);
-
-    poly[1].x = XCoord (x2 + ldx, w);
-    poly[1].y = YCoord (y2 - ldy, w);
-
-    poly[2].x = XCoord (x2 - ldx, w);
-    poly[2].y = YCoord (y2 + ldy, w);
-
-    poly[3].x = XCoord (x1 - ldx, w);
-    poly[3].y = YCoord (y1 + ldy, w);
-
-    RenderUpdateBounds (poly, 4, &w->clock.damage);
-    if (draw)
-    {
-	if (RenderCheckBounds (poly, 4, &w->clock.damage))
-	{
-	    RenderPrepare (w, color);
-	    XRenderCompositeDoublePoly (XtDisplay (w),
-					PictOpOver,
-					w->clock.fill_picture,
-					w->clock.picture,
-					w->clock.mask_format,
-					0, 0, 0, 0, poly, 4, EvenOddRule);
-	}
+RenderLine(ClockWidget w, XDouble x1, XDouble y1, XDouble x2, XDouble y2,
+           XftColor * color, Boolean draw)
+{
+    XPointDouble poly[4];
+    XDouble dx = (x2 - x1);
+    XDouble dy = (y2 - y1);
+    XDouble len = sqrt(dx * dx + dy * dy);
+    XDouble ldx = (LINE_WIDTH / 2.0) * dy / len;
+    XDouble ldy = (LINE_WIDTH / 2.0) * dx / len;
+
+    poly[0].x = XCoord(x1 + ldx, w);
+    poly[0].y = YCoord(y1 - ldy, w);
+
+    poly[1].x = XCoord(x2 + ldx, w);
+    poly[1].y = YCoord(y2 - ldy, w);
+
+    poly[2].x = XCoord(x2 - ldx, w);
+    poly[2].y = YCoord(y2 + ldy, w);
+
+    poly[3].x = XCoord(x1 - ldx, w);
+    poly[3].y = YCoord(y1 + ldy, w);
+
+    RenderUpdateBounds(poly, 4, &w->clock.damage);
+    if (draw) {
+        if (RenderCheckBounds(poly, 4, &w->clock.damage)) {
+            RenderPrepare(w, color);
+            XRenderCompositeDoublePoly(XtDisplay(w),
+                                       PictOpOver,
+                                       w->clock.fill_picture,
+                                       w->clock.picture,
+                                       w->clock.mask_format,
+                                       0, 0, 0, 0, poly, 4, EvenOddRule);
+        }
     }
     else
-	RenderUpdateBounds (poly, 4, &w->clock.damage);
+        RenderUpdateBounds(poly, 4, &w->clock.damage);
 }
 
 static void
-RenderRotate (ClockWidget w, XPointDouble *out, double x, double y, double s, double c)
+RenderRotate(ClockWidget w, XPointDouble * out, double x, double y, double s,
+             double c)
 {
-    out->x = XCoord (x * c - y * s, w);
-    out->y = YCoord (y * c + x * s, w);
+    out->x = XCoord(x * c - y * s, w);
+    out->y = YCoord(y * c + x * s, w);
 }
 
 static void
-RenderHand (ClockWidget w, int tick_units, int size, XftColor *color,
-	    Boolean draw)
+RenderHand(ClockWidget w, double tick_units, double size, XftColor * color,
+           Boolean draw)
 {
-    double	    c, s;
-    XPointDouble    poly[3];
-    double	    outer_x;
-    double	    inner_y;
+    double c, s;
+    XPointDouble poly[3];
+    double outer_x;
+    double inner_y;
 
-    ClockAngle (tick_units, &c, &s);
+    ClockAngle(tick_units, &c, &s);
     s = -s;
 
     /* compute raw positions */
@@ -1062,49 +1052,51 @@ RenderHand (ClockWidget w, int tick_unit
     inner_y = HAND_WIDTH_FRACT / 100.0;
 
     /* rotate them into position */
-    RenderRotate (w, &poly[0], outer_x, 0.0, s, c);
-    RenderRotate (w, &poly[1], -inner_y, inner_y, s, c);
-    RenderRotate (w, &poly[2], -inner_y, -inner_y, s, c);
+    RenderRotate(w, &poly[0], outer_x, 0.0, s, c);
+    RenderRotate(w, &poly[1], -inner_y, inner_y, s, c);
+    RenderRotate(w, &poly[2], -inner_y, -inner_y, s, c);
 
-    if (draw)
-    {
-	if (RenderCheckBounds (poly, 3, &w->clock.damage))
-	{
-	    RenderPrepare (w, color);
-	    XRenderCompositeDoublePoly (XtDisplay (w),
-					PictOpOver,
-					w->clock.fill_picture,
-					w->clock.picture,
-					w->clock.mask_format,
-					0, 0, 0, 0, poly, 3, EvenOddRule);
-	}
+    if (draw) {
+        if (RenderCheckBounds(poly, 3, &w->clock.damage)) {
+            RenderPrepare(w, color);
+            XRenderCompositeDoublePoly(XtDisplay(w),
+                                       PictOpOver,
+                                       w->clock.fill_picture,
+                                       w->clock.picture,
+                                       w->clock.mask_format,
+                                       0, 0, 0, 0, poly, 3, EvenOddRule);
+        }
     }
-    RenderUpdateBounds (poly, 3, &w->clock.damage);
+    RenderUpdateBounds(poly, 3, &w->clock.damage);
 }
 
 static void
-RenderHands (ClockWidget w, struct tm *tm, Boolean draw)
+RenderHands(ClockWidget w, struct tm *tm, struct timeval *tv, Boolean draw)
 {
-    RenderHand (w, tm->tm_hour * 300 + tm->tm_min*5, HOUR_HAND_FRACT, &w->clock.hour_color, draw);
-    RenderHand (w, tm->tm_min * 60 + tm->tm_sec, MINUTE_HAND_FRACT, &w->clock.min_color, draw);
+    double sec = tm->tm_sec + tv->tv_usec / 1000000.0;
+
+    RenderHand(w, tm->tm_hour * 300 + tm->tm_min * 5 + sec / 12.0, HOUR_HAND_FRACT,
+               &w->clock.hour_color, draw);
+    RenderHand(w, tm->tm_min * 60 + sec, MINUTE_HAND_FRACT,
+               &w->clock.min_color, draw);
 }
 
 static void
-RenderSec (ClockWidget w, struct tm *tm, struct timeval *tv, Boolean draw)
+RenderSec(ClockWidget w, struct tm *tm, struct timeval *tv, Boolean draw)
 {
-    double	    c, s;
-    XPointDouble    poly[10];
-    double	    inner_x, middle_x, outer_x, far_x;
-    double	    middle_y;
-    double	    line_y;
-    double	    sec;
+    double c, s;
+    XPointDouble poly[10];
+    double inner_x, middle_x, outer_x, far_x;
+    double middle_y;
+    double line_y;
+    double sec;
 
     sec = tm->tm_sec;
 
     if (w->clock.update < 1.0)
-	sec += tv->tv_usec / 1000000.0;
+        sec += tv->tv_usec / 1000000.0;
 
-    ClockAngle ((int) (sec * 60.0), &c, &s);
+    ClockAngle((int) (sec * 60.0), &c, &s);
 
     s = -s;
 
@@ -1121,91 +1113,98 @@ RenderSec (ClockWidget w, struct tm *tm,
     /*
      * Rotate them into position
      */
-    RenderRotate (w, &poly[0], -line_y, line_y, s, c);
-    RenderRotate (w, &poly[1], inner_x, line_y, s, c);
-    RenderRotate (w, &poly[2], middle_x, middle_y, s, c);
-    RenderRotate (w, &poly[3], outer_x, line_y, s, c);
-    RenderRotate (w, &poly[4], far_x, line_y, s, c);
-    RenderRotate (w, &poly[5], far_x, -line_y, s, c);
-    RenderRotate (w, &poly[6], outer_x, -line_y, s, c);
-    RenderRotate (w, &poly[7], middle_x, -middle_y, s, c);
-    RenderRotate (w, &poly[8], inner_x, -line_y, s, c);
-    RenderRotate (w, &poly[9], -line_y, -line_y, s, c);
+    RenderRotate(w, &poly[0], -line_y, line_y, s, c);
+    RenderRotate(w, &poly[1], inner_x, line_y, s, c);
+    RenderRotate(w, &poly[2], middle_x, middle_y, s, c);
+    RenderRotate(w, &poly[3], outer_x, line_y, s, c);
+    RenderRotate(w, &poly[4], far_x, line_y, s, c);
+    RenderRotate(w, &poly[5], far_x, -line_y, s, c);
+    RenderRotate(w, &poly[6], outer_x, -line_y, s, c);
+    RenderRotate(w, &poly[7], middle_x, -middle_y, s, c);
+    RenderRotate(w, &poly[8], inner_x, -line_y, s, c);
+    RenderRotate(w, &poly[9], -line_y, -line_y, s, c);
 
-    if (draw)
-    {
-	if (RenderCheckBounds (poly, 10, &w->clock.damage))
-	{
-	    RenderPrepare (w, &w->clock.sec_color);
-	    XRenderCompositeDoublePoly (XtDisplay (w),
-					PictOpOver,
-					w->clock.fill_picture,
-					w->clock.picture,
-					w->clock.mask_format,
-					0, 0, 0, 0, poly, 10, EvenOddRule);
-	}
+    if (draw) {
+        if (RenderCheckBounds(poly, 10, &w->clock.damage)) {
+            RenderPrepare(w, &w->clock.sec_color);
+            XRenderCompositeDoublePoly(XtDisplay(w),
+                                       PictOpOver,
+                                       w->clock.fill_picture,
+                                       w->clock.picture,
+                                       w->clock.mask_format,
+                                       0, 0, 0, 0, poly, 10, EvenOddRule);
+        }
     }
-    else
-    {
-	RenderUpdateBounds (poly, 10, &w->clock.damage);
+    else {
+        RenderUpdateBounds(poly, 10, &w->clock.damage);
     }
 }
 
 #endif
 
 static void
-Realize(Widget gw, XtValueMask *valueMask, XSetWindowAttributes *attrs)
+Realize(Widget gw, XtValueMask * valueMask, XSetWindowAttributes * attrs)
 {
-     ClockWidget	w = (ClockWidget) gw;
+    ClockWidget w = (ClockWidget) gw;
+
 #ifdef notdef
-     *valueMask |= CWBitGravity;
-     attrs->bit_gravity = ForgetGravity;
+    *valueMask |= CWBitGravity;
+    attrs->bit_gravity = ForgetGravity;
 #endif
-     switch (w->clock.backing_store) {
-     case Always:
-     case NotUseful:
-     case WhenMapped:
-     	*valueMask |=CWBackingStore;
-	attrs->backing_store = w->clock.backing_store;
-	break;
-     }
-     (*clockWidgetClass->core_class.superclass->core_class.realize)
-	 (gw, valueMask, attrs);
-     Resize(gw);
+    switch (w->clock.backing_store) {
+    case Always:
+    case NotUseful:
+    case WhenMapped:
+        *valueMask |= CWBackingStore;
+        attrs->backing_store = w->clock.backing_store;
+        break;
+    }
+    (*clockWidgetClass->core_class.superclass->core_class.realize)
+        (gw, valueMask, attrs);
+    Resize(gw);
 }
 
 static void
 Destroy(Widget gw)
 {
-     ClockWidget w = (ClockWidget) gw;
-     if (w->clock.interval_id) XtRemoveTimeOut (w->clock.interval_id);
+    ClockWidget w = (ClockWidget) gw;
+
+    if (w->clock.interval_id)
+        XtRemoveTimeOut(w->clock.interval_id);
 #ifdef XRENDER
     if (w->clock.picture)
-	XRenderFreePicture (XtDisplay(w), w->clock.picture);
+        XRenderFreePicture(XtDisplay(w), w->clock.picture);
     if (w->clock.fill_picture)
-	XRenderFreePicture (XtDisplay(w), w->clock.fill_picture);
+        XRenderFreePicture(XtDisplay(w), w->clock.fill_picture);
 #endif
-     XtReleaseGC (gw, w->clock.myGC);
-     XtReleaseGC (gw, w->clock.HighGC);
-     XtReleaseGC (gw, w->clock.HandGC);
-     XtReleaseGC (gw, w->clock.EraseGC);
+    XtReleaseGC(gw, w->clock.myGC);
+    XtReleaseGC(gw, w->clock.HighGC);
+    XtReleaseGC(gw, w->clock.HandGC);
+    XtReleaseGC(gw, w->clock.EraseGC);
 }
 
 static void
 Resize(Widget gw)
 {
     ClockWidget w = (ClockWidget) gw;
+
     /* don't do this computation if window hasn't been realized yet. */
     if (XtIsRealized(gw) && w->clock.analog) {
-	/* need signed value since Dimension is unsigned */
-	int radius = ((int) min(w->core.width, w->core.height) - (int) (2 * w->clock.padding)) / 2;
-        w->clock.radius = (Dimension) max (radius, 1);
-
-        w->clock.second_hand_length = (int)(SECOND_HAND_FRACT * w->clock.radius) / 100;
-        w->clock.minute_hand_length = (int)(MINUTE_HAND_FRACT * w->clock.radius) / 100;
-        w->clock.hour_hand_length = (int)(HOUR_HAND_FRACT * w->clock.radius) / 100;
-        w->clock.hand_width = (int)(HAND_WIDTH_FRACT * w->clock.radius) / 100;
-        w->clock.second_hand_width = (int)(SECOND_WIDTH_FRACT * w->clock.radius) / 100;
+        /* need signed value since Dimension is unsigned */
+        int radius =
+            ((int) min(w->core.width, w->core.height) -
+             (int) (2 * w->clock.padding)) / 2;
+        w->clock.radius = (Dimension) max(radius, 1);
+
+        w->clock.second_hand_length =
+            (int) (SECOND_HAND_FRACT * w->clock.radius) / 100;
+        w->clock.minute_hand_length =
+            (int) (MINUTE_HAND_FRACT * w->clock.radius) / 100;
+        w->clock.hour_hand_length =
+            (int) (HOUR_HAND_FRACT * w->clock.radius) / 100;
+        w->clock.hand_width = (int) (HAND_WIDTH_FRACT * w->clock.radius) / 100;
+        w->clock.second_hand_width =
+            (int) (SECOND_WIDTH_FRACT * w->clock.radius) / 100;
 
         w->clock.centerX = w->core.width / 2;
         w->clock.centerY = w->core.height / 2;
@@ -1215,44 +1214,44 @@ Resize(Widget gw)
     w->clock.y_scale = 0.45 * w->core.height;
     w->clock.x_off = 0.5 * w->core.width;
     w->clock.y_off = 0.5 * w->core.height;
-    if (w->clock.pixmap)
-    {
-	XFreePixmap (XtDisplay (w), w->clock.pixmap);
-	w->clock.pixmap = 0;
-	if (w->clock.draw)
-	{
-	    XftDrawDestroy (w->clock.draw);
-	    w->clock.draw = NULL;
-	}
-	w->clock.picture = 0;
+    if (w->clock.pixmap) {
+        XFreePixmap(XtDisplay(w), w->clock.pixmap);
+        w->clock.pixmap = 0;
+        if (w->clock.draw) {
+            XftDrawDestroy(w->clock.draw);
+            w->clock.draw = NULL;
+        }
+        w->clock.picture = 0;
     }
 #endif
 }
 
 /* ARGSUSED */
 static void
-Redisplay(Widget gw, XEvent *event, Region region)
+Redisplay(Widget gw, XEvent * event, Region region)
 {
     ClockWidget w = (ClockWidget) gw;
+
     if (w->clock.analog) {
 #ifdef XRENDER
-	if (w->clock.render && w->clock.can_polygon)
-	    XClipBox (region, &w->clock.damage);
-	else
-#endif
-	{
-	    if (w->clock.numseg != 0)
-		erase_hands (w, (struct tm *) 0);
-	    DrawClockFace(w);
-	}
-    } else {
+        if (w->clock.render && w->clock.can_polygon)
+            XClipBox(region, &w->clock.damage);
+        else
+#endif
+        {
+            if (w->clock.numseg != 0)
+                erase_hands(w, (struct tm *) 0);
+            DrawClockFace(w);
+        }
+    }
+    else {
 #ifdef XRENDER
-	if (w->clock.render)
-	    XClipBox (region, &w->clock.damage);
+        if (w->clock.render)
+            XClipBox(region, &w->clock.damage);
 #endif
-	w->clock.prev_time_string[0] = '\0';
+        w->clock.prev_time_string[0] = '\0';
     }
-    clock_tic((XtPointer)w, (XtIntervalId *)NULL);
+    clock_tic((XtPointer) w, (XtIntervalId *) NULL);
 }
 
 #define USEC_MILLIS(us)	((unsigned long) (us) / 1000)
@@ -1293,21 +1292,21 @@ static void
 round_time(float _update, struct tm *tm, struct timeval *tv)
 {
     /* interval in milliseconds */
-    unsigned long	update = (int) (_update * 1000.0 + 0.5);
+    unsigned long update = (int) (_update * 1000.0 + 0.5);
 
     /* compute milliseconds since midnight */
-    unsigned long	old_secs = time_seconds(tm);
-    unsigned long	old_millis = time_millis(tm, tv);
+    unsigned long old_secs = time_seconds(tm);
+    unsigned long old_millis = time_millis(tm, tv);
 
     /* Nearest number of intervals since midnight */
-    unsigned long	intervals = time_intervals(old_millis, update);
+    unsigned long intervals = time_intervals(old_millis, update);
 
     /* The number of milliseconds for that number of intervals */
-    unsigned long	new_millis = intervals * update;
-    time_t	t;
+    unsigned long new_millis = intervals * update;
+    time_t t;
 
     if (new_millis > DAY_MILLIS)
-	new_millis = DAY_MILLIS;
+        new_millis = DAY_MILLIS;
 
     /* Compute the time_t of that interval by subtracting off the real
      * seconds and adding back in the desired second
@@ -1368,7 +1367,7 @@ round_time(float _update, struct tm *tm,
  *
  *   ord(e)=n/gcd(n,e)=n/e
  *
- * from wich follows
+ * from which follows
  *
  *   e=d  ==>  f: I={0,..,m-1} -> J={0,..,m-1}: j=i*r mod m is bijective
  *        ==>  D={k*d mod n : k in Z} = U.
@@ -1386,7 +1385,7 @@ round_time(float _update, struct tm *tm,
  *
  * which implements state tracking.  This approach doesn't work well
  * since the set timeout w does not guarantee a next call at time
- * t(i+1), e.g. due to progam sleeps, time adjustments, and leap
+ * t(i+1), e.g. due to program sleeps, time adjustments, and leap
  * seconds.  A robust method should only rely on the current time
  * tc(i) to identify t(i).  The derivation above shows 2 options:
  *
@@ -1410,7 +1409,7 @@ waittime(float _update, struct timeval *
     unsigned long result;
 
     if (next_millis > DAY_MILLIS)
-	next_millis = DAY_MILLIS;
+        next_millis = DAY_MILLIS;
 
     result = next_millis - millis;
     return result;
@@ -1418,295 +1417,273 @@ waittime(float _update, struct timeval *
 
 /* ARGSUSED */
 static void
-clock_tic(XtPointer client_data, XtIntervalId *id)
+clock_tic(XtPointer client_data, XtIntervalId * id)
 {
-        ClockWidget w = (ClockWidget)client_data;
-	struct tm tm;
-	struct timeval	tv;
-	char	*time_ptr;
-        register Display *dpy = XtDisplay(w);
-        register Window win = XtWindow(w);
-
-	X_GETTIMEOFDAY (&tv);
-	tm = *localtime(&tv.tv_sec);
-	if (w->clock.update && (id || !w->clock.interval_id))
-	    w->clock.interval_id =
-		XtAppAddTimeOut( XtWidgetToApplicationContext( (Widget) w),
-				 waittime(w->clock.update, &tv, &tm),
-				 clock_tic, (XtPointer)w );
-
-	round_time(w->clock.update, &tm, &tv);
-	/*
-	 * Beep on the half hour; double-beep on the hour.
-	 */
-	if (w->clock.chime == TRUE) {
-	    if (w->clock.beeped && (tm.tm_min != 30) &&
-		(tm.tm_min != 0))
-	      w->clock.beeped = FALSE;
-	    if (((tm.tm_min == 30) || (tm.tm_min == 0))
-		&& (!w->clock.beeped)) {
-		w->clock.beeped = TRUE;
+    ClockWidget w = (ClockWidget) client_data;
+    struct tm tm;
+    struct timeval tv;
+    char *time_ptr;
+    register Display *dpy = XtDisplay(w);
+    register Window win = XtWindow(w);
+
+    X_GETTIMEOFDAY(&tv);
+    tm = *localtime(&tv.tv_sec);
+    if (w->clock.update && (id || !w->clock.interval_id))
+        w->clock.interval_id =
+            XtAppAddTimeOut(XtWidgetToApplicationContext((Widget) w),
+                            waittime(w->clock.update, &tv, &tm),
+                            clock_tic, (XtPointer) w);
+
+    round_time(w->clock.update, &tm, &tv);
+    /*
+     * Beep on the half hour; double-beep on the hour.
+     */
+    if (w->clock.chime == TRUE) {
+        if (w->clock.beeped && (tm.tm_min != 30) && (tm.tm_min != 0))
+            w->clock.beeped = FALSE;
+        if (((tm.tm_min == 30) || (tm.tm_min == 0))
+            && (!w->clock.beeped)) {
+            w->clock.beeped = TRUE;
 #ifdef XKB
-		if (tm.tm_min==0) {
-		    XkbStdBell(dpy,win,50,XkbBI_ClockChimeHour);
-		    XkbStdBell(dpy,win,50,XkbBI_RepeatingLastBell);
-		}
-		else {
-		    XkbStdBell(dpy,win,50,XkbBI_ClockChimeHalf);
-		}
+            if (tm.tm_min == 0) {
+                XkbStdBell(dpy, win, 50, XkbBI_ClockChimeHour);
+                XkbStdBell(dpy, win, 50, XkbBI_RepeatingLastBell);
+            }
+            else {
+                XkbStdBell(dpy, win, 50, XkbBI_ClockChimeHalf);
+            }
 #else
-		XBell(dpy, 50);
-		if (tm.tm_min == 0)
-		  XBell(dpy, 50);
-#endif
-	    }
-	}
-	if( w->clock.analog == FALSE ) {
-	    int	clear_from = w->core.width;
-	    int i, len, prev_len;
-
-	    time_ptr = TimeString (w, &tm);
-	    len = strlen (time_ptr);
-	    if (len && time_ptr[len - 1] == '\n') time_ptr[--len] = '\0';
-	    prev_len = strlen (w->clock.prev_time_string);
-	    for (i = 0; ((i < len) && (i < prev_len) &&
-	    		 (w->clock.prev_time_string[i] == time_ptr[i])); i++);
+            XBell(dpy, 50);
+            if (tm.tm_min == 0)
+                XBell(dpy, 50);
+#endif
+        }
+    }
+    if (w->clock.analog == FALSE) {
+        int clear_from = w->core.width;
+        int i, len, prev_len;
+
+        time_ptr = TimeString(w, &tm);
+        len = strlen(time_ptr);
+        if (len && time_ptr[len - 1] == '\n')
+            time_ptr[--len] = '\0';
+        prev_len = strlen(w->clock.prev_time_string);
+        for (i = 0; ((i < len) && (i < prev_len) &&
+                     (w->clock.prev_time_string[i] == time_ptr[i])); i++);
 
 #ifdef XRENDER
-	    if (w->clock.render)
-	    {
-		XRectangle  old_tail, new_tail, head;
-		int	    x, y;
+        if (w->clock.render) {
+            XRectangle old_tail, new_tail, head;
+            int x, y;
+
 #if !defined(NO_I18N) && defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
-		char *utf8_str;
+            char *utf8_str;
 #endif
 
-		RenderTextBounds (w, w->clock.prev_time_string, i, prev_len,
-				  &old_tail, NULL, NULL);
-		RenderUpdateRectBounds (&old_tail, &w->clock.damage);
-		RenderTextBounds (w, time_ptr, i, len,
-				  &new_tail, NULL, NULL);
-		RenderUpdateRectBounds (&new_tail, &w->clock.damage);
-
-		while (i)
-		{
-		    RenderTextBounds (w, time_ptr, 0, i, &head, NULL, NULL);
-		    if (!RenderRectIn (&head, &w->clock.damage))
-			break;
-		    i--;
-		}
-		RenderTextBounds (w, time_ptr, i, len, &new_tail, &x, &y);
-		RenderClip (w);
-		RenderPrepare (w, NULL);
+            RenderTextBounds(w, w->clock.prev_time_string, i, prev_len,
+                             &old_tail, NULL, NULL);
+            RenderUpdateRectBounds(&old_tail, &w->clock.damage);
+            RenderTextBounds(w, time_ptr, i, len, &new_tail, NULL, NULL);
+            RenderUpdateRectBounds(&new_tail, &w->clock.damage);
+
+            while (i) {
+                RenderTextBounds(w, time_ptr, 0, i, &head, NULL, NULL);
+                if (!RenderRectIn(&head, &w->clock.damage))
+                    break;
+                i--;
+            }
+            RenderTextBounds(w, time_ptr, i, len, &new_tail, &x, &y);
+            RenderClip(w);
+            RenderPrepare(w, NULL);
 #ifndef NO_I18N
-		if (w->clock.utf8) {
-		    XftDrawStringUtf8 (w->clock.draw,
-				    &w->clock.fg_color,
-				    w->clock.face,
-				    x, y,
-				    (FcChar8 *) time_ptr + i, len - i);
-
-		}
-# if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
-		else if ((utf8_str =
-		    clock_to_utf8(time_ptr + i, len - i)) != NULL) {
-		    	XftDrawStringUtf8 (w->clock.draw,
-				    &w->clock.fg_color,
-				    w->clock.face,
-				    x, y,
-				    (FcChar8 *)utf8_str, strlen(utf8_str) );
-		    free(utf8_str);
-		}
-# endif
-		else
-#endif
-		{
-		    XftDrawString8 (w->clock.draw,
-				    &w->clock.fg_color,
-				    w->clock.face,
-				    x, y,
-				    (FcChar8 *) time_ptr + i, len - i);
-		}
-		RenderUpdate (w);
-		RenderResetBounds (&w->clock.damage);
-	    }
-	    else
+            if (w->clock.utf8) {
+                XftDrawStringUtf8(w->clock.draw,
+                                  &w->clock.fg_color,
+                                  w->clock.face,
+                                  x, y, (FcChar8 *) time_ptr + i, len - i);
+
+            }
+#if defined(HAVE_ICONV) && defined(HAVE_NL_LANGINFO)
+            else if ((utf8_str = clock_to_utf8(time_ptr + i, len - i)) != NULL) {
+                XftDrawStringUtf8(w->clock.draw,
+                                  &w->clock.fg_color,
+                                  w->clock.face,
+                                  x, y, (FcChar8 *) utf8_str, strlen(utf8_str));
+                free(utf8_str);
+            }
+#endif
+            else
+#endif
+            {
+                XftDrawString8(w->clock.draw,
+                               &w->clock.fg_color,
+                               w->clock.face,
+                               x, y, (FcChar8 *) time_ptr + i, len - i);
+            }
+            RenderUpdate(w);
+            RenderResetBounds(&w->clock.damage);
+        }
+        else
 #endif
 #ifndef NO_I18N
-	    if(!no_locale) {
-		if(0 < len) {
-		    XFontSetExtents *fse
-		      = XExtentsOfFontSet(w->clock.fontSet);
-
-		    XmbDrawImageString(dpy,win,w->clock.fontSet,w->clock.myGC,
-				       (2+w->clock.padding +
-					(i?XmbTextEscapement(w->clock.fontSet,
-							     time_ptr,i):0)),
-				       2+w->clock.padding+fse->max_logical_extent.height,
-				       time_ptr+i,len-i
-			);
-		    /*
-		     * Clear any left over bits
-		     */
-		    clear_from = XmbTextEscapement (w->clock.fontSet,time_ptr,
-						    len) + 2+w->clock.padding;
-		}
-	    } else
-#endif /* NO_I18N */
-	    {
-		XDrawImageString (dpy, win, w->clock.myGC,
-				  (1+w->clock.padding +
-				   XTextWidth (w->clock.font, time_ptr, i)),
-				  w->clock.font->ascent+w->clock.padding,
-				  time_ptr + i, len - i);
-		/*
-		 * Clear any left over bits
-		 */
-		clear_from = XTextWidth (w->clock.font, time_ptr, len)
-		    	     + 2 + w->clock.padding;
-	    }
-	    if (clear_from < (int)w->core.width)
-		XClearArea (dpy, win,
-		    clear_from, 0, w->core.width - clear_from, w->core.height,
-		    False);
+        if (!no_locale) {
+            if (0 < len) {
+                XFontSetExtents *fse = XExtentsOfFontSet(w->clock.fontSet);
+
+                XmbDrawImageString(dpy, win, w->clock.fontSet, w->clock.myGC,
+                                   (2 + w->clock.padding +
+                                    (i ? XmbTextEscapement(w->clock.fontSet,
+                                                           time_ptr, i) : 0)),
+                                   2 + w->clock.padding +
+                                   fse->max_logical_extent.height, time_ptr + i,
+                                   len - i);
+                /*
+                 * Clear any left over bits
+                 */
+                clear_from = XmbTextEscapement(w->clock.fontSet, time_ptr,
+                                               len) + 2 + w->clock.padding;
+            }
+        }
+        else
+#endif                          /* NO_I18N */
+        {
+            XDrawImageString(dpy, win, w->clock.myGC,
+                             (1 + w->clock.padding +
+                              XTextWidth(w->clock.font, time_ptr, i)),
+                             w->clock.font->ascent + w->clock.padding,
+                             time_ptr + i, len - i);
+            /*
+             * Clear any left over bits
+             */
+            clear_from = XTextWidth(w->clock.font, time_ptr, len)
+                + 2 + w->clock.padding;
+        }
+        if (clear_from < (int) w->core.width)
+            XClearArea(dpy, win,
+                       clear_from, 0, w->core.width - clear_from,
+                       w->core.height, False);
 #ifdef HAVE_STRLCPY
-	    strlcpy (w->clock.prev_time_string+i, time_ptr+i,
-		     sizeof(w->clock.prev_time_string)-i);
+        strlcpy(w->clock.prev_time_string + i, time_ptr + i,
+                sizeof(w->clock.prev_time_string) - i);
 #else
-	    strncpy (w->clock.prev_time_string+i, time_ptr+i,
-		     sizeof(w->clock.prev_time_string)-i);
-	    w->clock.prev_time_string[sizeof(w->clock.prev_time_string)-1] = 0;
-#endif
-	} else {
-			/*
-			 * The second (or minute) hand is sec (or min)
-			 * sixtieths around the clock face. The hour hand is
-			 * (hour + min/60) twelfths of the way around the
-			 * clock-face.  The derivation is left as an excercise
-			 * for the reader.
-			 */
-
-			/*
-			 * 12 hour clock.
-			 */
-			if(tm.tm_hour >= 12)
-				tm.tm_hour -= 12;
+        strncpy(w->clock.prev_time_string + i, time_ptr + i,
+                sizeof(w->clock.prev_time_string) - i);
+        w->clock.prev_time_string[sizeof(w->clock.prev_time_string) - 1] = 0;
+#endif
+    }
+    else {
+        /*
+         * The second (or minute) hand is sec (or min)
+         * sixtieths around the clock face. The hour hand is
+         * (hour + min/60) twelfths of the way around the
+         * clock-face.  The derivation is left as an exercise
+         * for the reader.
+         */
+
+        /*
+         * 12 hour clock.
+         */
+        if (tm.tm_hour >= 12)
+            tm.tm_hour -= 12;
 
 #ifdef XRENDER
-			if (w->clock.render && w->clock.can_polygon)
-			{
-			    w->clock.mask_format = XRenderFindStandardFormat (XtDisplay (w),
-									      w->clock.sharp ?
-									      PictStandardA1 :
-									      PictStandardA8);
-			    /*
-			     * Compute repaint area
-			     */
-			    if (tm.tm_min != w->clock.otm.tm_min ||
-				tm.tm_hour != w->clock.otm.tm_hour ||
-				tm.tm_sec != w->clock.otm.tm_sec)
-			    {
-				RenderHands (w, &w->clock.otm, False);
-				RenderHands (w, &tm, False);
-			    }
-			    if (w->clock.show_second_hand &&
-				(tm.tm_sec != w->clock.otm.tm_sec ||
-				tv.tv_usec != w->clock.otv.tv_usec))
-			    {
-				RenderSec (w, &w->clock.otm, &w->clock.otv, False);
-				RenderSec (w, &tm, &tv, False);
-			    }
-			    if (w->clock.damage.width &&
-				w->clock.damage.height)
-			    {
-				RenderClip (w);
-				DrawClockFace (w);
-				RenderHands (w, &tm, True);
-				if (w->clock.show_second_hand == TRUE)
-				    RenderSec (w, &tm, &tv, True);
-			    }
-			    w->clock.otm = tm;
-			    w->clock.otv = tv;
-			    RenderUpdate (w);
-			    RenderResetBounds (&w->clock.damage);
-			    return;
-			}
-#endif
-
-			erase_hands (w, &tm);
-
-		    if (w->clock.numseg == 0 ||
-			tm.tm_min != w->clock.otm.tm_min ||
-			tm.tm_hour != w->clock.otm.tm_hour ||
-			tm.tm_sec != w->clock.otm.tm_sec) {
-			    w->clock.segbuffptr = w->clock.segbuff;
-			    w->clock.numseg = 0;
-			    /*
-			     * Calculate the hour hand, fill it in with its
-			     * color and then outline it.  Next, do the same
-			     * with the minute hand.  This is a cheap hidden
-			     * line algorithm.
-			     */
-			    DrawHand(w,
-				w->clock.minute_hand_length, w->clock.hand_width,
-				tm.tm_min * 60 + tm.tm_sec
-			    );
-			    if(w->clock.Hdpixel != w->core.background_pixel)
-				XFillPolygon( dpy,
-				    win, w->clock.HandGC,
-				    w->clock.segbuff, VERTICES_IN_HANDS,
-				    Convex, CoordModeOrigin
-				);
-			    XDrawLines( dpy,
-				win, w->clock.HighGC,
-				w->clock.segbuff, VERTICES_IN_HANDS,
-				       CoordModeOrigin);
-			    w->clock.hour = w->clock.segbuffptr;
-			    DrawHand(w,
-				w->clock.hour_hand_length, w->clock.hand_width,
-				tm.tm_hour * 300 + tm.tm_min * 5
-			    );
-			    if(w->clock.Hdpixel != w->core.background_pixel) {
-			      XFillPolygon(dpy,
-					   win, w->clock.HandGC,
-					   w->clock.hour,
-					   VERTICES_IN_HANDS,
-					   Convex, CoordModeOrigin
-					   );
-			    }
-			    XDrawLines( dpy,
-				       win, w->clock.HighGC,
-				       w->clock.hour, VERTICES_IN_HANDS,
-				       CoordModeOrigin );
-
-			    w->clock.sec = w->clock.segbuffptr;
-		    }
-		    if (w->clock.show_second_hand == TRUE) {
-			    w->clock.segbuffptr = w->clock.sec;
-			    DrawSecond(w,
-				w->clock.second_hand_length - 2,
-				w->clock.second_hand_width,
-				w->clock.minute_hand_length + 2,
-				tm.tm_sec * 60 + tv.tv_usec * 60 / 1000000
-			    );
-			    if(w->clock.Hdpixel != w->core.background_pixel)
-				XFillPolygon( dpy,
-				    win, w->clock.HandGC,
-				    w->clock.sec,
-				    VERTICES_IN_HANDS -2,
-				    Convex, CoordModeOrigin
-			    );
-			    XDrawLines( dpy,
-				       win, w->clock.HighGC,
-				       w->clock.sec,
-				       VERTICES_IN_HANDS-1,
-				       CoordModeOrigin
-				        );
-
-			}
-			w->clock.otm = tm;
-			w->clock.otv = tv;
-		}
+        if (w->clock.render && w->clock.can_polygon) {
+            w->clock.mask_format = XRenderFindStandardFormat(XtDisplay(w),
+                                                             w->clock.sharp ?
+                                                             PictStandardA1 :
+                                                             PictStandardA8);
+            /*
+             * Compute repaint area
+             */
+            if (tm.tm_min != w->clock.otm.tm_min ||
+                tm.tm_hour != w->clock.otm.tm_hour ||
+                tm.tm_sec != w->clock.otm.tm_sec ||
+		tv.tv_usec != w->clock.otv.tv_usec) {
+                RenderHands(w, &w->clock.otm, &w->clock.otv, False);
+                RenderHands(w, &tm, &tv, False);
+            }
+            if (w->clock.show_second_hand &&
+                (tm.tm_sec != w->clock.otm.tm_sec ||
+                 tv.tv_usec != w->clock.otv.tv_usec)) {
+                RenderSec(w, &w->clock.otm, &w->clock.otv, False);
+                RenderSec(w, &tm, &tv, False);
+            }
+            if (w->clock.damage.width && w->clock.damage.height) {
+                RenderClip(w);
+                DrawClockFace(w);
+                RenderHands(w, &tm, &tv, True);
+                if (w->clock.show_second_hand == TRUE)
+                    RenderSec(w, &tm, &tv, True);
+            }
+            w->clock.otm = tm;
+            w->clock.otv = tv;
+            RenderUpdate(w);
+            RenderResetBounds(&w->clock.damage);
+            return;
+        }
+#endif
+
+        erase_hands(w, &tm);
+
+        if (w->clock.numseg == 0 ||
+            tm.tm_min != w->clock.otm.tm_min ||
+            tm.tm_hour != w->clock.otm.tm_hour ||
+            tm.tm_sec != w->clock.otm.tm_sec) {
+            w->clock.segbuffptr = w->clock.segbuff;
+            w->clock.numseg = 0;
+            /*
+             * Calculate the hour hand, fill it in with its
+             * color and then outline it.  Next, do the same
+             * with the minute hand.  This is a cheap hidden
+             * line algorithm.
+             */
+            DrawHand(w,
+                     w->clock.minute_hand_length, w->clock.hand_width,
+                     tm.tm_min * 60 + tm.tm_sec);
+            if (w->clock.Hdpixel != w->core.background_pixel)
+                XFillPolygon(dpy,
+                             win, w->clock.HandGC,
+                             w->clock.segbuff, VERTICES_IN_HANDS,
+                             Convex, CoordModeOrigin);
+            XDrawLines(dpy,
+                       win, w->clock.HighGC,
+                       w->clock.segbuff, VERTICES_IN_HANDS, CoordModeOrigin);
+            w->clock.hour = w->clock.segbuffptr;
+            DrawHand(w,
+                     w->clock.hour_hand_length, w->clock.hand_width,
+                     tm.tm_hour * 300 + tm.tm_min * 5);
+            if (w->clock.Hdpixel != w->core.background_pixel) {
+                XFillPolygon(dpy,
+                             win, w->clock.HandGC,
+                             w->clock.hour,
+                             VERTICES_IN_HANDS, Convex, CoordModeOrigin);
+            }
+            XDrawLines(dpy,
+                       win, w->clock.HighGC,
+                       w->clock.hour, VERTICES_IN_HANDS, CoordModeOrigin);
+
+            w->clock.sec = w->clock.segbuffptr;
+        }
+        if (w->clock.show_second_hand == TRUE) {
+            w->clock.segbuffptr = w->clock.sec;
+            DrawSecond(w,
+                       w->clock.second_hand_length - 2,
+                       w->clock.second_hand_width,
+                       w->clock.minute_hand_length + 2,
+                       tm.tm_sec * 60 + tv.tv_usec * 60 / 1000000);
+            if (w->clock.Hdpixel != w->core.background_pixel)
+                XFillPolygon(dpy,
+                             win, w->clock.HandGC,
+                             w->clock.sec,
+                             VERTICES_IN_HANDS - 2, Convex, CoordModeOrigin);
+            XDrawLines(dpy,
+                       win, w->clock.HighGC,
+                       w->clock.sec, VERTICES_IN_HANDS - 1, CoordModeOrigin);
+
+        }
+        w->clock.otm = tm;
+        w->clock.otv = tv;
+    }
 }
 
 static void
@@ -1715,195 +1692,57 @@ erase_hands(ClockWidget w, struct tm *tm
     /*
      * Erase old hands.
      */
-    if(w->clock.numseg > 0) {
-	Display	*dpy;
-	Window	win;
-
-	dpy = XtDisplay (w);
-	win = XtWindow (w);
-	if (w->clock.show_second_hand == TRUE) {
-	    XDrawLines(dpy, win,
-		w->clock.EraseGC,
-		w->clock.sec,
-		VERTICES_IN_HANDS-1,
-		CoordModeOrigin);
-	    if(w->clock.Hdpixel != w->core.background_pixel) {
-		XFillPolygon(dpy,
-			win, w->clock.EraseGC,
-			w->clock.sec,
-			VERTICES_IN_HANDS-2,
-			Convex, CoordModeOrigin
-			);
-	    }
-	}
-	if(!tm || tm->tm_min != w->clock.otm.tm_min ||
-		  tm->tm_hour != w->clock.otm.tm_hour ||
-	    tm->tm_sec != w->clock.otm.tm_sec)
- 	{
-	    XDrawLines( dpy, win,
-			w->clock.EraseGC,
-			w->clock.segbuff,
-			VERTICES_IN_HANDS,
-			CoordModeOrigin);
-	    XDrawLines( dpy, win,
-			w->clock.EraseGC,
-			w->clock.hour,
-			VERTICES_IN_HANDS,
-			CoordModeOrigin);
-	    if(w->clock.Hdpixel != w->core.background_pixel) {
-		XFillPolygon( dpy, win,
- 			      w->clock.EraseGC,
-			      w->clock.segbuff, VERTICES_IN_HANDS,
-			      Convex, CoordModeOrigin);
-		XFillPolygon( dpy, win,
- 			      w->clock.EraseGC,
-			      w->clock.hour,
-			      VERTICES_IN_HANDS,
-			      Convex, CoordModeOrigin);
-	    }
-	}
+    if (w->clock.numseg > 0) {
+        Display *dpy;
+        Window win;
+
+        dpy = XtDisplay(w);
+        win = XtWindow(w);
+        if (w->clock.show_second_hand == TRUE) {
+            XDrawLines(dpy, win,
+                       w->clock.EraseGC,
+                       w->clock.sec, VERTICES_IN_HANDS - 1, CoordModeOrigin);
+            if (w->clock.Hdpixel != w->core.background_pixel) {
+                XFillPolygon(dpy,
+                             win, w->clock.EraseGC,
+                             w->clock.sec,
+                             VERTICES_IN_HANDS - 2, Convex, CoordModeOrigin);
+            }
+        }
+        if (!tm || tm->tm_min != w->clock.otm.tm_min ||
+            tm->tm_hour != w->clock.otm.tm_hour ||
+            tm->tm_sec != w->clock.otm.tm_sec) {
+            XDrawLines(dpy, win,
+                       w->clock.EraseGC,
+                       w->clock.segbuff, VERTICES_IN_HANDS, CoordModeOrigin);
+            XDrawLines(dpy, win,
+                       w->clock.EraseGC,
+                       w->clock.hour, VERTICES_IN_HANDS, CoordModeOrigin);
+            if (w->clock.Hdpixel != w->core.background_pixel) {
+                XFillPolygon(dpy, win,
+                             w->clock.EraseGC,
+                             w->clock.segbuff, VERTICES_IN_HANDS,
+                             Convex, CoordModeOrigin);
+                XFillPolygon(dpy, win,
+                             w->clock.EraseGC,
+                             w->clock.hour,
+                             VERTICES_IN_HANDS, Convex, CoordModeOrigin);
+            }
+        }
     }
 }
 
-static double const Sines[] = {
-0.000000, 0.001745, 0.003490, 0.005235, 0.006981, 0.008726, 0.010471, 0.012217,
-0.013962, 0.015707, 0.017452, 0.019197, 0.020942, 0.022687, 0.024432, 0.026176,
-0.027921, 0.029666, 0.031410, 0.033155, 0.034899, 0.036643, 0.038387, 0.040131,
-0.041875, 0.043619, 0.045362, 0.047106, 0.048849, 0.050592, 0.052335, 0.054078,
-0.055821, 0.057564, 0.059306, 0.061048, 0.062790, 0.064532, 0.066273, 0.068015,
-0.069756, 0.071497, 0.073238, 0.074978, 0.076719, 0.078459, 0.080198, 0.081938,
-0.083677, 0.085416, 0.087155, 0.088894, 0.090632, 0.092370, 0.094108, 0.095845,
-0.097582, 0.099319, 0.101056, 0.102792, 0.104528, 0.106264, 0.107999, 0.109734,
-0.111468, 0.113203, 0.114937, 0.116670, 0.118403, 0.120136, 0.121869, 0.123601,
-0.125333, 0.127064, 0.128795, 0.130526, 0.132256, 0.133986, 0.135715, 0.137444,
-0.139173, 0.140901, 0.142628, 0.144356, 0.146083, 0.147809, 0.149535, 0.151260,
-0.152985, 0.154710, 0.156434, 0.158158, 0.159881, 0.161603, 0.163325, 0.165047,
-0.166768, 0.168489, 0.170209, 0.171929, 0.173648, 0.175366, 0.177084, 0.178802,
-0.180519, 0.182235, 0.183951, 0.185666, 0.187381, 0.189095, 0.190808, 0.192521,
-0.194234, 0.195946, 0.197657, 0.199367, 0.201077, 0.202787, 0.204496, 0.206204,
-0.207911, 0.209618, 0.211324, 0.213030, 0.214735, 0.216439, 0.218143, 0.219846,
-0.221548, 0.223250, 0.224951, 0.226651, 0.228350, 0.230049, 0.231747, 0.233445,
-0.235142, 0.236838, 0.238533, 0.240228, 0.241921, 0.243615, 0.245307, 0.246999,
-0.248689, 0.250380, 0.252069, 0.253757, 0.255445, 0.257132, 0.258819, 0.260504,
-0.262189, 0.263873, 0.265556, 0.267238, 0.268919, 0.270600, 0.272280, 0.273959,
-0.275637, 0.277314, 0.278991, 0.280666, 0.282341, 0.284015, 0.285688, 0.287360,
-0.289031, 0.290702, 0.292371, 0.294040, 0.295708, 0.297374, 0.299040, 0.300705,
-0.302369, 0.304033, 0.305695, 0.307356, 0.309016, 0.310676, 0.312334, 0.313992,
-0.315649, 0.317304, 0.318959, 0.320612, 0.322265, 0.323917, 0.325568, 0.327217,
-0.328866, 0.330514, 0.332161, 0.333806, 0.335451, 0.337095, 0.338737, 0.340379,
-0.342020, 0.343659, 0.345298, 0.346935, 0.348572, 0.350207, 0.351841, 0.353474,
-0.355106, 0.356737, 0.358367, 0.359996, 0.361624, 0.363251, 0.364876, 0.366501,
-0.368124, 0.369746, 0.371367, 0.372987, 0.374606, 0.376224, 0.377840, 0.379456,
-0.381070, 0.382683, 0.384295, 0.385906, 0.387515, 0.389123, 0.390731, 0.392337,
-0.393941, 0.395545, 0.397147, 0.398749, 0.400349, 0.401947, 0.403545, 0.405141,
-0.406736, 0.408330, 0.409923, 0.411514, 0.413104, 0.414693, 0.416280, 0.417867,
-0.419452, 0.421035, 0.422618, 0.424199, 0.425779, 0.427357, 0.428935, 0.430511,
-0.432085, 0.433659, 0.435231, 0.436801, 0.438371, 0.439939, 0.441505, 0.443071,
-0.444635, 0.446197, 0.447759, 0.449318, 0.450877, 0.452434, 0.453990, 0.455544,
-0.457097, 0.458649, 0.460199, 0.461748, 0.463296, 0.464842, 0.466386, 0.467929,
-0.469471, 0.471011, 0.472550, 0.474088, 0.475624, 0.477158, 0.478691, 0.480223,
-0.481753, 0.483282, 0.484809, 0.486335, 0.487859, 0.489382, 0.490903, 0.492423,
-0.493941, 0.495458, 0.496973, 0.498487, 0.499999, 0.501510, 0.503019, 0.504527,
-0.506033, 0.507538, 0.509041, 0.510542, 0.512042, 0.513541, 0.515038, 0.516533,
-0.518027, 0.519519, 0.521009, 0.522498, 0.523985, 0.525471, 0.526955, 0.528438,
-0.529919, 0.531398, 0.532876, 0.534352, 0.535826, 0.537299, 0.538770, 0.540240,
-0.541708, 0.543174, 0.544639, 0.546101, 0.547563, 0.549022, 0.550480, 0.551936,
-0.553391, 0.554844, 0.556295, 0.557745, 0.559192, 0.560638, 0.562083, 0.563526,
-0.564967, 0.566406, 0.567843, 0.569279, 0.570713, 0.572145, 0.573576, 0.575005,
-0.576432, 0.577857, 0.579281, 0.580702, 0.582122, 0.583541, 0.584957, 0.586372,
-0.587785, 0.589196, 0.590605, 0.592013, 0.593418, 0.594822, 0.596224, 0.597625,
-0.599023, 0.600420, 0.601815, 0.603207, 0.604599, 0.605988, 0.607375, 0.608761,
-0.610145, 0.611527, 0.612907, 0.614285, 0.615661, 0.617035, 0.618408, 0.619779,
-0.621147, 0.622514, 0.623879, 0.625242, 0.626603, 0.627963, 0.629320, 0.630675,
-0.632029, 0.633380, 0.634730, 0.636078, 0.637423, 0.638767, 0.640109, 0.641449,
-0.642787, 0.644123, 0.645457, 0.646789, 0.648119, 0.649448, 0.650774, 0.652098,
-0.653420, 0.654740, 0.656059, 0.657375, 0.658689, 0.660001, 0.661311, 0.662620,
-0.663926, 0.665230, 0.666532, 0.667832, 0.669130, 0.670426, 0.671720, 0.673012,
-0.674302, 0.675590, 0.676875, 0.678159, 0.679441, 0.680720, 0.681998, 0.683273,
-0.684547, 0.685818, 0.687087, 0.688354, 0.689619, 0.690882, 0.692143, 0.693401,
-0.694658, 0.695912, 0.697165, 0.698415, 0.699663, 0.700909, 0.702153, 0.703394,
-0.704634, 0.705871, 0.707106,
-};
-static double const Cosines[] = {
-1.000000, 0.999998, 0.999993, 0.999986, 0.999975, 0.999961, 0.999945, 0.999925,
-0.999902, 0.999876, 0.999847, 0.999815, 0.999780, 0.999742, 0.999701, 0.999657,
-0.999610, 0.999559, 0.999506, 0.999450, 0.999390, 0.999328, 0.999262, 0.999194,
-0.999122, 0.999048, 0.998970, 0.998889, 0.998806, 0.998719, 0.998629, 0.998536,
-0.998440, 0.998341, 0.998239, 0.998134, 0.998026, 0.997915, 0.997801, 0.997684,
-0.997564, 0.997440, 0.997314, 0.997185, 0.997052, 0.996917, 0.996778, 0.996637,
-0.996492, 0.996345, 0.996194, 0.996041, 0.995884, 0.995724, 0.995561, 0.995396,
-0.995227, 0.995055, 0.994880, 0.994702, 0.994521, 0.994337, 0.994150, 0.993960,
-0.993767, 0.993571, 0.993372, 0.993170, 0.992965, 0.992757, 0.992546, 0.992331,
-0.992114, 0.991894, 0.991671, 0.991444, 0.991215, 0.990983, 0.990747, 0.990509,
-0.990268, 0.990023, 0.989776, 0.989525, 0.989272, 0.989015, 0.988756, 0.988493,
-0.988228, 0.987959, 0.987688, 0.987413, 0.987136, 0.986855, 0.986572, 0.986285,
-0.985996, 0.985703, 0.985407, 0.985109, 0.984807, 0.984503, 0.984195, 0.983885,
-0.983571, 0.983254, 0.982935, 0.982612, 0.982287, 0.981958, 0.981627, 0.981292,
-0.980955, 0.980614, 0.980271, 0.979924, 0.979575, 0.979222, 0.978867, 0.978508,
-0.978147, 0.977783, 0.977415, 0.977045, 0.976672, 0.976296, 0.975916, 0.975534,
-0.975149, 0.974761, 0.974370, 0.973975, 0.973578, 0.973178, 0.972775, 0.972369,
-0.971961, 0.971549, 0.971134, 0.970716, 0.970295, 0.969872, 0.969445, 0.969015,
-0.968583, 0.968147, 0.967709, 0.967267, 0.966823, 0.966376, 0.965925, 0.965472,
-0.965016, 0.964557, 0.964095, 0.963630, 0.963162, 0.962691, 0.962217, 0.961741,
-0.961261, 0.960779, 0.960293, 0.959805, 0.959313, 0.958819, 0.958322, 0.957822,
-0.957319, 0.956813, 0.956304, 0.955793, 0.955278, 0.954760, 0.954240, 0.953716,
-0.953190, 0.952661, 0.952129, 0.951594, 0.951056, 0.950515, 0.949972, 0.949425,
-0.948876, 0.948323, 0.947768, 0.947210, 0.946649, 0.946085, 0.945518, 0.944948,
-0.944376, 0.943800, 0.943222, 0.942641, 0.942057, 0.941470, 0.940880, 0.940288,
-0.939692, 0.939094, 0.938493, 0.937888, 0.937281, 0.936672, 0.936059, 0.935444,
-0.934825, 0.934204, 0.933580, 0.932953, 0.932323, 0.931691, 0.931055, 0.930417,
-0.929776, 0.929132, 0.928485, 0.927836, 0.927183, 0.926528, 0.925870, 0.925209,
-0.924546, 0.923879, 0.923210, 0.922538, 0.921863, 0.921185, 0.920504, 0.919821,
-0.919135, 0.918446, 0.917754, 0.917060, 0.916362, 0.915662, 0.914959, 0.914253,
-0.913545, 0.912834, 0.912120, 0.911403, 0.910683, 0.909961, 0.909236, 0.908508,
-0.907777, 0.907044, 0.906307, 0.905568, 0.904827, 0.904082, 0.903335, 0.902585,
-0.901832, 0.901077, 0.900318, 0.899557, 0.898794, 0.898027, 0.897258, 0.896486,
-0.895711, 0.894934, 0.894154, 0.893371, 0.892585, 0.891797, 0.891006, 0.890212,
-0.889416, 0.888617, 0.887815, 0.887010, 0.886203, 0.885393, 0.884580, 0.883765,
-0.882947, 0.882126, 0.881303, 0.880477, 0.879648, 0.878817, 0.877982, 0.877146,
-0.876306, 0.875464, 0.874619, 0.873772, 0.872922, 0.872069, 0.871213, 0.870355,
-0.869494, 0.868631, 0.867765, 0.866896, 0.866025, 0.865151, 0.864274, 0.863395,
-0.862513, 0.861629, 0.860742, 0.859852, 0.858959, 0.858064, 0.857167, 0.856267,
-0.855364, 0.854458, 0.853550, 0.852640, 0.851726, 0.850811, 0.849892, 0.848971,
-0.848048, 0.847121, 0.846193, 0.845261, 0.844327, 0.843391, 0.842452, 0.841510,
-0.840566, 0.839619, 0.838670, 0.837718, 0.836764, 0.835807, 0.834847, 0.833885,
-0.832921, 0.831954, 0.830984, 0.830012, 0.829037, 0.828060, 0.827080, 0.826098,
-0.825113, 0.824126, 0.823136, 0.822144, 0.821149, 0.820151, 0.819152, 0.818149,
-0.817144, 0.816137, 0.815127, 0.814115, 0.813100, 0.812083, 0.811063, 0.810041,
-0.809016, 0.807989, 0.806960, 0.805928, 0.804893, 0.803856, 0.802817, 0.801775,
-0.800731, 0.799684, 0.798635, 0.797583, 0.796529, 0.795473, 0.794414, 0.793353,
-0.792289, 0.791223, 0.790155, 0.789084, 0.788010, 0.786935, 0.785856, 0.784776,
-0.783693, 0.782608, 0.781520, 0.780430, 0.779337, 0.778243, 0.777145, 0.776046,
-0.774944, 0.773840, 0.772733, 0.771624, 0.770513, 0.769399, 0.768283, 0.767165,
-0.766044, 0.764921, 0.763796, 0.762668, 0.761538, 0.760405, 0.759271, 0.758134,
-0.756995, 0.755853, 0.754709, 0.753563, 0.752414, 0.751264, 0.750111, 0.748955,
-0.747798, 0.746638, 0.745475, 0.744311, 0.743144, 0.741975, 0.740804, 0.739631,
-0.738455, 0.737277, 0.736097, 0.734914, 0.733729, 0.732542, 0.731353, 0.730162,
-0.728968, 0.727772, 0.726574, 0.725374, 0.724171, 0.722967, 0.721760, 0.720551,
-0.719339, 0.718126, 0.716910, 0.715692, 0.714472, 0.713250, 0.712026, 0.710799,
-0.709570, 0.708339, 0.707106,
-};
-
 static void
-ClockAngle(int tick_units, double *sinp, double *cosp)
+ClockAngle(double tick_units, double *sinp, double *cosp)
 {
-    int reduced, upper;
+    double angle = tick_units * (M_PI / 180 / 10.0);
 
-    reduced = tick_units % 450;
-    upper = tick_units / 450;
-    if (upper & 1)
-	reduced = 450 - reduced;
-    if ((upper + 1) & 2) {
-	*sinp = Cosines[reduced];
-	*cosp = Sines[reduced];
-    } else {
-	*sinp = Sines[reduced];
-	*cosp = Cosines[reduced];
-    }
-    if (upper >= 2 && upper < 6)
-	*cosp = -*cosp;
-    if (upper >= 4)
-	*sinp = -*sinp;
+#ifdef HAVE_SINCOS
+    sincos(angle, sinp, cosp);
+#else
+    *sinp = sin(angle);
+    *cosp = cos(angle);
+#endif
 }
 
 /*
@@ -1921,28 +1760,28 @@ ClockAngle(int tick_units, double *sinp,
  */
 static void
 DrawLine(ClockWidget w, Dimension blank_length, Dimension length,
-	 int tick_units)
+         int tick_units)
 {
-	double dblank_length = (double)blank_length, dlength = (double)length;
-	double cosangle, sinangle;
-	int cx = w->clock.centerX, cy = w->clock.centerY, x1, y1, x2, y2;
-
-	/*
-	 *  Angles are measured from 12 o'clock, clockwise increasing.
-	 *  Since in X, +x is to the right and +y is downward:
-	 *
-	 *	x = x0 + r * sin(theta)
-	 *	y = y0 - r * cos(theta)
-	 *
-	 */
-	ClockAngle(tick_units, &sinangle, &cosangle);
-
-	/* break this out so that stupid compilers can cope */
-	x1 = cx + (int)(dblank_length * sinangle);
-	y1 = cy - (int)(dblank_length * cosangle);
-	x2 = cx + (int)(dlength * sinangle);
-	y2 = cy - (int)(dlength * cosangle);
-	SetSeg(w, x1, y1, x2, y2);
+    double dblank_length = (double) blank_length, dlength = (double) length;
+    double cosangle, sinangle;
+    int cx = w->clock.centerX, cy = w->clock.centerY, x1, y1, x2, y2;
+
+    /*
+     *  Angles are measured from 12 o'clock, clockwise increasing.
+     *  Since in X, +x is to the right and +y is downward:
+     *
+     *      x = x0 + r * sin(theta)
+     *      y = y0 - r * cos(theta)
+     *
+     */
+    ClockAngle(tick_units, &sinangle, &cosangle);
+
+    /* break this out so that stupid compilers can cope */
+    x1 = cx + (int) (dblank_length * sinangle);
+    y1 = cy - (int) (dblank_length * cosangle);
+    x2 = cx + (int) (dlength * sinangle);
+    y2 = cy - (int) (dlength * cosangle);
+    SetSeg(w, x1, y1, x2, y2);
 }
 
 /*
@@ -1958,41 +1797,41 @@ static void
 DrawHand(ClockWidget w, Dimension length, Dimension width, int tick_units)
 {
 
-	double cosangle, sinangle;
-	register double ws, wc;
-	Position x, y, x1, y1, x2, y2;
-
-	/*
-	 *  Angles are measured from 12 o'clock, clockwise increasing.
-	 *  Since in X, +x is to the right and +y is downward:
-	 *
-	 *	x = x0 + r * sin(theta)
-	 *	y = y0 - r * cos(theta)
-	 *
-	 */
-	ClockAngle(tick_units, &sinangle, &cosangle);
-	/*
-	 * Order of points when drawing the hand.
-	 *
-	 *		1,4
-	 *		/ \
-	 *	       /   \
-	 *	      /     \
-	 *	    2 ------- 3
-	 */
-	wc = width * cosangle;
-	ws = width * sinangle;
-	SetSeg(w,
-	       x = w->clock.centerX + clock_round(length * sinangle),
-	       y = w->clock.centerY - clock_round(length * cosangle),
-	       x1 = w->clock.centerX - clock_round(ws + wc),
-	       y1 = w->clock.centerY + clock_round(wc - ws));  /* 1 ---- 2 */
-	/* 2 */
-	SetSeg(w, x1, y1,
-	       x2 = w->clock.centerX - clock_round(ws - wc),
-	       y2 = w->clock.centerY + clock_round(wc + ws));  /* 2 ----- 3 */
+    double cosangle, sinangle;
+    register double ws, wc;
+    Position x, y, x1, y1, x2, y2;
 
-	SetSeg(w, x2, y2, x, y);	/* 3 ----- 1(4) */
+    /*
+     *  Angles are measured from 12 o'clock, clockwise increasing.
+     *  Since in X, +x is to the right and +y is downward:
+     *
+     *      x = x0 + r * sin(theta)
+     *      y = y0 - r * cos(theta)
+     *
+     */
+    ClockAngle(tick_units, &sinangle, &cosangle);
+    /*
+     * Order of points when drawing the hand.
+     *
+     *              1,4
+     *              / \
+     *             /   \
+     *            /     \
+     *          2 ------- 3
+     */
+    wc = width * cosangle;
+    ws = width * sinangle;
+    SetSeg(w,
+	   x = w->clock.centerX + clock_round(length * sinangle),
+	   y = w->clock.centerY - clock_round(length * cosangle),
+	   x1 = w->clock.centerX - clock_round(ws + wc),
+	   y1 = w->clock.centerY + clock_round(wc - ws));  /* 1 ---- 2 */
+    /* 2 */
+    SetSeg(w, x1, y1,
+	   x2 = w->clock.centerX - clock_round(ws - wc),
+	   y2 = w->clock.centerY + clock_round(wc + ws));  /* 2 ----- 3 */
+
+    SetSeg(w, x2, y2, x, y);	/* 3 ----- 1(4) */
 }
 
 /*
@@ -2007,71 +1846,70 @@ DrawHand(ClockWidget w, Dimension length
  */
 static void
 DrawSecond(ClockWidget w, Dimension length, Dimension width,
-	   Dimension offset, int tick_units)
+           Dimension offset, int tick_units)
 {
 
-	double cosangle, sinangle;
-	register double ms, mc, ws, wc;
-	register int mid;
-	Position x, y;
-
-	/*
-	 *  Angles are measured from 12 o'clock, clockwise increasing.
-	 *  Since in X, +x is to the right and +y is downward:
-	 *
-	 *	x = x0 + r * sin(theta)
-	 *	y = y0 - r * cos(theta)
-	 *
-	 */
-	ClockAngle(tick_units, &sinangle, &cosangle);
-	/*
-	 * Order of points when drawing the hand.
-	 *
-	 *		1,5
-	 *		/ \
-	 *	       /   \
-	 *	      /     \
-	 *	    2<       >4
-	 *	      \     /
-	 *	       \   /
-	 *		\ /
-	 *	-	 3
-	 *	|
-	 *	|
-	 *   offset
-	 *	|
-	 *	|
-	 *	-	 + center
-	 */
-
-	mid = (int) (length + offset) / 2;
-	mc = mid * cosangle;
-	ms = mid * sinangle;
-	wc = width * cosangle;
-	ws = width * sinangle;
-	/*1 ---- 2 */
-	SetSeg(w,
-	       x = w->clock.centerX + clock_round(length * sinangle),
-	       y = w->clock.centerY - clock_round(length * cosangle),
-	       w->clock.centerX + clock_round(ms - wc),
-	       w->clock.centerY - clock_round(mc + ws) );
-	SetSeg(w, w->clock.centerX + clock_round(offset *sinangle),
-	       w->clock.centerY - clock_round(offset * cosangle), /* 2-----3 */
-	       w->clock.centerX + clock_round(ms + wc),
-	       w->clock.centerY - clock_round(mc - ws));
-	w->clock.segbuffptr->x = x;
-	w->clock.segbuffptr++->y = y;
-	w->clock.numseg ++;
+    double cosangle, sinangle;
+    register double ms, mc, ws, wc;
+    register int mid;
+    Position x, y;
+
+    /*
+     *  Angles are measured from 12 o'clock, clockwise increasing.
+     *  Since in X, +x is to the right and +y is downward:
+     *
+     *      x = x0 + r * sin(theta)
+     *      y = y0 - r * cos(theta)
+     *
+     */
+    ClockAngle(tick_units, &sinangle, &cosangle);
+    /*
+     * Order of points when drawing the hand.
+     *
+     *              1,5
+     *              / \
+     *             /   \
+     *            /     \
+     *          2<       >4
+     *            \     /
+     *             \   /
+     *              \ /
+     *      -        3
+     *      |
+     *      |
+     *   offset
+     *      |
+     *      |
+     *      -        + center
+     */
+
+    mid = (int) (length + offset) / 2;
+    mc = mid * cosangle;
+    ms = mid * sinangle;
+    wc = width * cosangle;
+    ws = width * sinangle;
+    /*1 ---- 2 */
+    SetSeg(w,
+           x = w->clock.centerX + clock_round(length * sinangle),
+           y = w->clock.centerY - clock_round(length * cosangle),
+           w->clock.centerX + clock_round(ms - wc),
+           w->clock.centerY - clock_round(mc + ws));
+    SetSeg(w, w->clock.centerX + clock_round(offset * sinangle), w->clock.centerY - clock_round(offset * cosangle),     /* 2-----3 */
+           w->clock.centerX + clock_round(ms + wc),
+           w->clock.centerY - clock_round(mc - ws));
+    w->clock.segbuffptr->x = x;
+    w->clock.segbuffptr++->y = y;
+    w->clock.numseg++;
 }
 
 static void
 SetSeg(ClockWidget w, int x1, int y1, int x2, int y2)
 {
-	w->clock.segbuffptr->x = x1;
-	w->clock.segbuffptr++->y = y1;
-	w->clock.segbuffptr->x = x2;
-	w->clock.segbuffptr++->y = y2;
-	w->clock.numseg += 2;
+    w->clock.segbuffptr->x = x1;
+    w->clock.segbuffptr++->y = y1;
+    w->clock.segbuffptr->x = x2;
+    w->clock.segbuffptr++->y = y2;
+    w->clock.numseg += 2;
 }
 
 /*
@@ -2081,74 +1919,75 @@ SetSeg(ClockWidget w, int x1, int y1, in
 static void
 DrawClockFace(ClockWidget w)
 {
-	register int i;
-	register int delta = (int)(w->clock.radius - w->clock.second_hand_length) / 3;
+    register int i;
+    register int delta =
+        (int) (w->clock.radius - w->clock.second_hand_length) / 3;
 
-	w->clock.segbuffptr = w->clock.segbuff;
-	w->clock.numseg = 0;
-	for (i = 0; i < 60; i++)
-	{
+    w->clock.segbuffptr = w->clock.segbuff;
+    w->clock.numseg = 0;
+    for (i = 0; i < 60; i++) {
 #ifdef XRENDER
-	    if (w->clock.render && w->clock.can_polygon)
-	    {
-		double	s, c;
-		XDouble	x1, y1, x2, y2;
-		XftColor	*color;
-		ClockAngle (i * 60, &s, &c);
-		x1 = c;
-		y1 = s;
-		if (i % 5)
-		{
-		    x2 = c * (MINOR_TICK_FRACT / 100.0);
-		    y2 = s * (MINOR_TICK_FRACT / 100.0);
-		    color = &w->clock.minor_color;
-		}
-		else
-		{
-		    x2 = c * (SECOND_HAND_FRACT / 100.0);
-		    y2 = s * (SECOND_HAND_FRACT / 100.0);
-		    color = &w->clock.major_color;
-		}
-		RenderLine (w, x1, y1, x2, y2, color, True);
-	    }
-	    else
-#endif
-	    {
-		DrawLine(w, ( (i % 5) == 0 ?
-			     w->clock.second_hand_length :
-			     (w->clock.radius - delta) ),
-			 w->clock.radius, i * 60);
-	    }
-	}
+        if (w->clock.render && w->clock.can_polygon) {
+            double s, c;
+            XDouble x1, y1, x2, y2;
+            XftColor *color;
+
+            ClockAngle(i * 60, &s, &c);
+            x1 = c;
+            y1 = s;
+            if (i % 5) {
+                x2 = c * (MINOR_TICK_FRACT / 100.0);
+                y2 = s * (MINOR_TICK_FRACT / 100.0);
+                color = &w->clock.minor_color;
+            }
+            else {
+                x2 = c * (SECOND_HAND_FRACT / 100.0);
+                y2 = s * (SECOND_HAND_FRACT / 100.0);
+                color = &w->clock.major_color;
+            }
+            RenderLine(w, x1, y1, x2, y2, color, True);
+        }
+        else
+#endif
+        {
+            DrawLine(w, ((i % 5) == 0 ?
+                         w->clock.second_hand_length :
+                         (w->clock.radius - delta)), w->clock.radius, i * 60);
+        }
+    }
 #ifdef XRENDER
-	if (w->clock.render && w->clock.can_polygon)
-	    return;
+    if (w->clock.render && w->clock.can_polygon)
+        return;
 #endif
-	/*
-	 * Go ahead and draw it.
-	 */
-	XDrawSegments(XtDisplay(w), XtWindow(w),
-		      w->clock.myGC, (XSegment *) &(w->clock.segbuff[0]),
-		      w->clock.numseg/2);
+    /*
+     * Go ahead and draw it.
+     */
+    XDrawSegments(XtDisplay(w), XtWindow(w),
+                  w->clock.myGC, (XSegment *) & (w->clock.segbuff[0]),
+                  w->clock.numseg / 2);
 
-	w->clock.segbuffptr = w->clock.segbuff;
-	w->clock.numseg = 0;
+    w->clock.segbuffptr = w->clock.segbuff;
+    w->clock.numseg = 0;
 }
 
 static int
 clock_round(double x)
 {
-	return(x >= 0.0 ? (int)(x + .5) : (int)(x - .5));
+    return (x >= 0.0 ? (int) (x + .5) : (int) (x - .5));
 }
 
 #ifdef XRENDER
 static Boolean
-sameColor (XftColor *old, XftColor *new)
+sameColor(XftColor * old, XftColor * new)
 {
-    if (old->color.red != new->color.red) return False;
-    if (old->color.green != new->color.green) return False;
-    if (old->color.blue != new->color.blue) return False;
-    if (old->color.alpha != new->color.alpha) return False;
+    if (old->color.red != new->color.red)
+        return False;
+    if (old->color.green != new->color.green)
+        return False;
+    if (old->color.blue != new->color.blue)
+        return False;
+    if (old->color.alpha != new->color.alpha)
+        return False;
     return True;
 }
 #endif
@@ -2156,114 +1995,112 @@ sameColor (XftColor *old, XftColor *new)
 /* ARGSUSED */
 static Boolean
 SetValues(Widget gcurrent, Widget grequest, Widget gnew,
-	  ArgList args, Cardinal *num_args)
+          ArgList args, Cardinal * num_args)
 {
-      ClockWidget current = (ClockWidget) gcurrent;
-      ClockWidget new = (ClockWidget) gnew;
-      Boolean redisplay = FALSE;
-      XtGCMask valuemask;
-      XGCValues	myXGCV;
-
-      /* first check for changes to clock-specific resources.  We'll accept all
-         the changes, but may need to do some computations first. */
-
-      if (new->clock.update != current->clock.update) {
-	  if (current->clock.interval_id)
-	      XtRemoveTimeOut (current->clock.interval_id);
-	  if (new->clock.update && XtIsRealized( (Widget) new))
-	      new->clock.interval_id = XtAppAddTimeOut(
-                                         XtWidgetToApplicationContext(gnew),
-					 fabsf(new->clock.update)*1000,
-				         clock_tic, (XtPointer)gnew);
-
-	  new->clock.show_second_hand =(fabsl(new->clock.update) <= SECOND_HAND_TIME);
-	  if (new->clock.show_second_hand != current->clock.show_second_hand)
-	    redisplay = TRUE;
-      }
+    ClockWidget current = (ClockWidget) gcurrent;
+    ClockWidget new = (ClockWidget) gnew;
+    Boolean redisplay = FALSE;
+    XtGCMask valuemask;
+    XGCValues myXGCV;
+
+    /* first check for changes to clock-specific resources.  We'll accept all
+       the changes, but may need to do some computations first. */
+
+    if (new->clock.update != current->clock.update) {
+        if (current->clock.interval_id)
+            XtRemoveTimeOut(current->clock.interval_id);
+        if (new->clock.update && XtIsRealized((Widget) new))
+            new->clock.interval_id =
+                XtAppAddTimeOut(XtWidgetToApplicationContext(gnew),
+                                fabsf(new->clock.update) * 1000, clock_tic,
+                                (XtPointer) gnew);
+
+        new->clock.show_second_hand =
+            (fabsf(new->clock.update) <= SECOND_HAND_TIME);
+        if (new->clock.show_second_hand != current->clock.show_second_hand)
+            redisplay = TRUE;
+    }
 
-      if (new->clock.padding != current->clock.padding)
-	   redisplay = TRUE;
+    if (new->clock.padding != current->clock.padding)
+        redisplay = TRUE;
 
-      if (new->clock.analog != current->clock.analog)
-	   redisplay = TRUE;
+    if (new->clock.analog != current->clock.analog)
+        redisplay = TRUE;
 
-       if (new->clock.font != current->clock.font)
-	   redisplay = TRUE;
+    if (new->clock.font != current->clock.font)
+        redisplay = TRUE;
 
 #ifndef NO_I18N
-       if (new->clock.fontSet != current->clock.fontSet)
-	   redisplay = TRUE;
+    if (new->clock.fontSet != current->clock.fontSet)
+        redisplay = TRUE;
 #endif
 
-      if ((ClockFgPixel(new) != ClockFgPixel (current))
-          || (new->core.background_pixel != current->core.background_pixel)) {
-          valuemask = GCForeground | GCBackground | GCFont | GCLineWidth;
-	  myXGCV.foreground = ClockFgPixel (new);
-	  myXGCV.background = new->core.background_pixel;
-          myXGCV.font = new->clock.font->fid;
-	  myXGCV.line_width = 0;
-	  XtReleaseGC (gcurrent, current->clock.myGC);
-	  new->clock.myGC = XtGetGC(gcurrent, valuemask, &myXGCV);
-	  redisplay = TRUE;
-          }
-
-      if (new->clock.Hipixel != current->clock.Hipixel) {
-          valuemask = GCForeground | GCLineWidth;
-	  myXGCV.foreground = new->clock.Hipixel;
-          myXGCV.font = new->clock.font->fid;
-	  myXGCV.line_width = 0;
-	  XtReleaseGC (gcurrent, current->clock.HighGC);
-	  new->clock.HighGC = XtGetGC((Widget)gcurrent, valuemask, &myXGCV);
-	  redisplay = TRUE;
-          }
-
-      if (new->clock.Hdpixel != current->clock.Hdpixel) {
-          valuemask = GCForeground;
-	  myXGCV.foreground = new->clock.Hdpixel;
-	  XtReleaseGC (gcurrent, current->clock.HandGC);
-	  new->clock.HandGC = XtGetGC((Widget)gcurrent, valuemask, &myXGCV);
-	  redisplay = TRUE;
-          }
-
-      if (new->core.background_pixel != current->core.background_pixel) {
-          valuemask = GCForeground | GCLineWidth | GCGraphicsExposures;
-	  myXGCV.foreground = new->core.background_pixel;
-	  myXGCV.line_width = 0;
-	  myXGCV.graphics_exposures = False;
-	  XtReleaseGC (gcurrent, current->clock.EraseGC);
-	  new->clock.EraseGC = XtGetGC((Widget)gcurrent, valuemask, &myXGCV);
-	  redisplay = TRUE;
-	  }
+    if ((ClockFgPixel(new) != ClockFgPixel(current))
+        || (new->core.background_pixel != current->core.background_pixel)) {
+        valuemask = GCForeground | GCBackground | GCFont | GCLineWidth;
+        myXGCV.foreground = ClockFgPixel(new);
+        myXGCV.background = new->core.background_pixel;
+        myXGCV.font = new->clock.font->fid;
+        myXGCV.line_width = 0;
+        XtReleaseGC(gcurrent, current->clock.myGC);
+        new->clock.myGC = XtGetGC(gcurrent, valuemask, &myXGCV);
+        redisplay = TRUE;
+    }
+
+    if (new->clock.Hipixel != current->clock.Hipixel) {
+        valuemask = GCForeground | GCLineWidth;
+        myXGCV.foreground = new->clock.Hipixel;
+        myXGCV.font = new->clock.font->fid;
+        myXGCV.line_width = 0;
+        XtReleaseGC(gcurrent, current->clock.HighGC);
+        new->clock.HighGC = XtGetGC((Widget) gcurrent, valuemask, &myXGCV);
+        redisplay = TRUE;
+    }
+
+    if (new->clock.Hdpixel != current->clock.Hdpixel) {
+        valuemask = GCForeground;
+        myXGCV.foreground = new->clock.Hdpixel;
+        XtReleaseGC(gcurrent, current->clock.HandGC);
+        new->clock.HandGC = XtGetGC((Widget) gcurrent, valuemask, &myXGCV);
+        redisplay = TRUE;
+    }
+
+    if (new->core.background_pixel != current->core.background_pixel) {
+        valuemask = GCForeground | GCLineWidth | GCGraphicsExposures;
+        myXGCV.foreground = new->core.background_pixel;
+        myXGCV.line_width = 0;
+        myXGCV.graphics_exposures = False;
+        XtReleaseGC(gcurrent, current->clock.EraseGC);
+        new->clock.EraseGC = XtGetGC((Widget) gcurrent, valuemask, &myXGCV);
+        redisplay = TRUE;
+    }
 #ifdef XRENDER
-     if (new->clock.face != current->clock.face)
-	redisplay = TRUE;
-     if (!sameColor (&new->clock.hour_color, &current->clock.fg_color) ||
-	 !sameColor (&new->clock.hour_color, &current->clock.hour_color) ||
-	 !sameColor (&new->clock.min_color, &current->clock.min_color) ||
-	 !sameColor (&new->clock.sec_color, &current->clock.sec_color) ||
-	 !sameColor (&new->clock.major_color, &current->clock.major_color) ||
-	 !sameColor (&new->clock.minor_color, &current->clock.minor_color))
-	redisplay = True;
+    if (new->clock.face != current->clock.face)
+        redisplay = TRUE;
+    if (!sameColor(&new->clock.hour_color, &current->clock.fg_color) ||
+        !sameColor(&new->clock.hour_color, &current->clock.hour_color) ||
+        !sameColor(&new->clock.min_color, &current->clock.min_color) ||
+        !sameColor(&new->clock.sec_color, &current->clock.sec_color) ||
+        !sameColor(&new->clock.major_color, &current->clock.major_color) ||
+        !sameColor(&new->clock.minor_color, &current->clock.minor_color))
+        redisplay = True;
     if (new->clock.sharp != current->clock.sharp)
-	redisplay = True;
+        redisplay = True;
     if (new->clock.render != current->clock.render)
-	redisplay = True;
-    if (new->clock.buffer != current->clock.buffer)
-    {
-	if (new->clock.pixmap)
-	{
-	    XFreePixmap (XtDisplay (new), new->clock.pixmap);
-	    new->clock.pixmap = 0;
-	}
-	if (new->clock.draw)
-	{
-	    XftDrawDestroy (new->clock.draw);
-	    new->clock.draw = NULL;
-	}
-	new->clock.picture = 0;
+        redisplay = True;
+    if (new->clock.buffer != current->clock.buffer) {
+        if (new->clock.pixmap) {
+            XFreePixmap(XtDisplay(new), new->clock.pixmap);
+            new->clock.pixmap = 0;
+        }
+        if (new->clock.draw) {
+            XftDrawDestroy(new->clock.draw);
+            new->clock.draw = NULL;
+        }
+        new->clock.picture = 0;
     }
 #endif
-     return (redisplay);
+    return (redisplay);
 
 }
 
@@ -2280,20 +2117,20 @@ clock_to_utf8(const char *str, int in_le
     size_t ret;
     const char *code_set = nl_langinfo(CODESET);
 
-    if (str == NULL ||code_set == NULL || strcasecmp(code_set, "646") == 0)
-    	return NULL;
+    if (str == NULL || code_set == NULL || strcasecmp(code_set, "646") == 0)
+        return NULL;
 
     if (strcasecmp(code_set, "UTF-8") == 0)
-    	return strdup(str);
+        return strdup(str);
 
     cd = iconv_open("UTF-8", code_set);
-    if (cd == (iconv_t)-1)
-    	return NULL;
+    if (cd == (iconv_t) - 1)
+        return NULL;
 
     buf_size = MB_LEN_MAX * (in_len + 1);
     if ((buf = malloc(buf_size)) == NULL) {
-    	(void) iconv_close(cd);
-    	return NULL;
+        (void) iconv_close(cd);
+        return NULL;
     }
 
     inptr = str;
@@ -2302,11 +2139,12 @@ clock_to_utf8(const char *str, int in_le
     oleft = buf_size;
 
     ret = iconv(cd, &inptr, &ileft, &outptr, &oleft);
-    if (ret == (size_t)(-1) || oleft == 0 ) {
+    if (ret == (size_t) (-1) || oleft == 0) {
         free(buf);
         buf = NULL;
-    } else
-	*outptr = '\0';
+    }
+    else
+        *outptr = '\0';
 
     (void) iconv_close(cd);
     return buf;

Reply via email to