From 688a56e8ab67b56550e2874d9d7423f0d435bfd9 Mon Sep 17 00:00:00 2001 From: "Carlos R. Mafra" Date: Thu, 20 Aug 2009 00:59:40 +0200 Subject: [PATCH] Change to the linux kernel coding style for arq in `git ls-files *.c`; do echo $arq; indent -linux -l115 $arq; done The different line break at 115 columns is because I use a widescreen monitor :-) --- WINGs/Examples/colorpick.c | 81 +- WINGs/Examples/connect.c | 370 +- WINGs/Examples/fontl.c | 204 +- WINGs/Examples/puzzle.c | 478 ++- WINGs/Examples/server.c | 1401 +++---- WINGs/Extras/test.c | 265 +- WINGs/Extras/wtabledelegates.c | 1160 +++--- WINGs/Extras/wtableview.c | 2633 ++++++------ WINGs/Tests/mywidget.c | 424 +- WINGs/Tests/testmywidget.c | 98 +- WINGs/Tests/wmfile.c | 238 +- WINGs/Tests/wmquery.c | 193 +- WINGs/Tests/wtest.c | 2082 +++++----- WINGs/array.c | 682 ++-- WINGs/bagtree.c | 1636 ++++---- WINGs/configuration.c | 229 +- WINGs/connection.c | 2011 +++++----- WINGs/data.c | 639 ++- WINGs/dragcommon.c | 545 ++- WINGs/dragdestination.c | 2135 +++++----- WINGs/dragsource.c | 2502 ++++++------ WINGs/error.c | 186 +- WINGs/findfile.c | 714 ++-- WINGs/handlers.c | 1179 +++--- WINGs/hashtable.c | 938 ++--- WINGs/host.c | 575 ++- WINGs/international.c | 5 +- WINGs/memory.c | 442 +- WINGs/misc.c | 14 +- WINGs/notification.c | 1014 +++-- WINGs/proplist.c | 3365 ++++++++-------- WINGs/puzzle.c | 473 ++- WINGs/selection.c | 835 ++-- WINGs/snprintf.c | 1879 ++++----- WINGs/string.c | 475 ++- WINGs/tree.c | 513 ++- WINGs/userdefaults.c | 1246 +++--- WINGs/usleep.c | 98 +- WINGs/wapplication.c | 383 +- WINGs/wappresource.c | 322 +- WINGs/wballoon.c | 1016 +++-- WINGs/wbox.c | 531 ++- WINGs/wbrowser.c | 2392 ++++++----- WINGs/wbutton.c | 1602 ++++---- WINGs/wcolor.c | 698 ++-- WINGs/wcolorpanel.c | 7231 ++++++++++++++++----------------- WINGs/wcolorwell.c | 898 ++--- WINGs/wevent.c | 906 ++--- WINGs/wfilepanel.c | 1894 +++++---- WINGs/wfont.c | 767 ++-- WINGs/wfont_noxft.c | 1470 ++++--- WINGs/wfont_wchar.c | 1142 +++--- WINGs/wfontpanel.c | 1705 ++++---- WINGs/wframe.c | 529 ++- WINGs/widgets.c | 2293 +++++------ WINGs/winputmethod.c | 452 +-- WINGs/wlabel.c | 474 +-- WINGs/wlist.c | 2397 ++++++----- WINGs/wmenuitem.c | 520 ++- WINGs/wmisc.c | 800 ++-- WINGs/wpanel.c | 1237 +++--- WINGs/wpixmap.c | 499 ++- WINGs/wpopupbutton.c | 1500 ++++--- WINGs/wprogressindicator.c | 529 ++- WINGs/wruler.c | 1135 +++--- WINGs/wscroller.c | 1748 ++++---- WINGs/wscrollview.c | 1197 +++--- WINGs/wslider.c | 1055 +++-- WINGs/wsplitview.c | 1665 ++++---- WINGs/wtabview.c | 1952 +++++---- WINGs/wtext.c | 8200 ++++++++++++++++++-------------------- WINGs/wtextfield.c | 3251 ++++++++------- WINGs/wutil.c | 53 +- WINGs/wview.c | 1440 ++++--- WINGs/wwindow.c | 1571 ++++---- WPrefs.app/Appearance.c | 4478 ++++++++++----------- WPrefs.app/Configurations.c | 1044 +++-- WPrefs.app/Expert.c | 251 +- WPrefs.app/Focus.c | 723 ++-- WPrefs.app/Font.c | 4081 +++++++++---------- WPrefs.app/FontSimple.c | 1530 ++++--- WPrefs.app/Icons.c | 694 ++-- WPrefs.app/KeyboardSettings.c | 362 +- WPrefs.app/KeyboardShortcuts.c | 1266 +++--- WPrefs.app/Menu.c | 3615 ++++++++--------- WPrefs.app/MenuPreferences.c | 473 ++- WPrefs.app/MouseSettings.c | 1667 ++++---- WPrefs.app/Paths.c | 673 ++-- WPrefs.app/Preferences.c | 704 ++-- WPrefs.app/TexturePanel.c | 3200 +++++++-------- WPrefs.app/Themes.c | 472 ++- WPrefs.app/WPrefs.c | 2051 +++++----- WPrefs.app/WindowHandling.c | 900 ++--- WPrefs.app/Workspace.c | 724 ++-- WPrefs.app/double.c | 360 +- WPrefs.app/editmenu.c | 2870 +++++++------ WPrefs.app/imagebrowser.c | 323 +- WPrefs.app/main.c | 393 +- WPrefs.app/xmodifier.c | 300 +- plugins/libwmfun/bilinear.c | 40 +- plugins/libwmfun/fade.c | 59 +- plugins/libwmfun/generic.c | 53 +- plugins/libwmfun/getopt.c | 823 ++-- plugins/libwmfun/getopt1.c | 197 +- plugins/libwmfun/wave.c | 51 +- src/actions.c | 3894 +++++++++--------- src/appicon.c | 1558 ++++---- src/application.c | 987 +++-- src/appmenu.c | 639 ++- src/balloon.c | 1190 +++--- src/client.c | 1569 ++++---- src/colormap.c | 267 +- src/cycling.c | 524 ++- src/defaults.c | 7069 ++++++++++++++++---------------- src/dialog.c | 3908 +++++++++--------- src/dock.c | 8626 +++++++++++++++++++--------------------- src/dockedapp.c | 985 +++-- src/event.c | 3597 ++++++++--------- src/framewin.c | 3024 +++++++------- src/geomview.c | 285 +- src/icon.c | 1896 +++++---- src/main.c | 1580 ++++---- src/menu.c | 5450 ++++++++++++------------- src/menureader.c | 854 ++-- src/misc.c | 2533 ++++++------ src/monitor.c | 303 +- src/motif.c | 513 ++- src/moveres.c | 4722 +++++++++++----------- src/pixmap.c | 523 ++- src/placement.c | 1285 +++--- src/properties.c | 719 ++-- src/resources.c | 37 +- src/rootmenu.c | 3666 +++++++++-------- src/screen.c | 2431 ++++++----- src/session.c | 2662 ++++++------- src/shutdown.c | 257 +- src/stacking.c | 1207 +++--- src/startup.c | 1967 +++++---- src/superfluous.c | 1554 ++++---- src/switchmenu.c | 889 ++--- src/switchpanel.c | 1426 ++++--- src/text.c | 763 ++-- src/texture.c | 1448 ++++--- src/usermenu.c | 746 ++-- src/wcore.c | 358 +- src/wdefaults.c | 1183 +++--- src/window.c | 6517 +++++++++++++++--------------- src/winmenu.c | 1356 +++---- src/winspector.c | 3448 ++++++++-------- src/wmspec.c | 3374 ++++++++-------- src/workspace.c | 2935 +++++++------- src/wsmap.c | 179 +- src/wsound.c | 80 +- src/xdnd.c | 671 ++-- src/xinerama.c | 712 ++-- src/xmodifier.c | 341 +- src/xutil.c | 389 +- test/notest.c | 258 +- test/wtest.c | 332 +- util/convertfonts.c | 291 +- util/directjpeg.c | 427 +- util/fontconv.c | 373 +- util/geticonset.c | 266 +- util/getstyle.c | 1282 +++--- util/seticons.c | 294 +- util/setstyle.c | 1234 +++--- util/wdread.c | 146 +- util/wdwrite.c | 271 +- util/wmagnify.c | 1056 +++-- util/wmsetbg.c | 3040 +++++++------- util/wmsetup.c | 800 ++-- util/wxcopy.c | 484 ++- util/wxpaste.c | 481 ++- wmlib/app.c | 74 +- wmlib/command.c | 159 +- wmlib/event.c | 94 +- wmlib/menu.c | 494 ++- wrlib/CmapAlloc.c | 342 +- wrlib/CrCmap.c | 1009 +++-- wrlib/DelCmap.c | 39 +- wrlib/LookupCmap.c | 611 ++- wrlib/StdCmap.c | 436 +- wrlib/alloca.c | 981 +++-- wrlib/color.c | 262 +- wrlib/context.c | 1566 ++++---- wrlib/convert.c | 2265 ++++++----- wrlib/convolve.c | 631 +-- wrlib/draw.c | 1199 +++--- wrlib/gif.c | 458 ++- wrlib/gradient.c | 1223 +++--- wrlib/jpeg.c | 424 +- wrlib/load.c | 718 ++-- wrlib/misc.c | 427 +- wrlib/nxpm.c | 1357 +++---- wrlib/png.c | 472 ++- wrlib/ppm.c | 351 +- wrlib/raster.c | 1302 +++--- wrlib/rotate.c | 774 ++-- wrlib/save.c | 19 +- wrlib/scale.c | 1231 +++--- wrlib/tests/testdraw.c | 1243 +++--- wrlib/tests/testgrad.c | 418 +- wrlib/tests/testrot.c | 136 +- wrlib/tests/view.c | 176 +- wrlib/tiff.c | 291 +- wrlib/x86_specific.c | 1294 +++--- wrlib/xpixmap.c | 373 +- wrlib/xpm.c | 552 ++- wrlib/xutil.c | 536 ++- 209 files changed, 124376 insertions(+), 135480 deletions(-) rewrite WINGs/Examples/colorpick.c (78%) rewrite WINGs/Examples/connect.c (90%) rewrite WINGs/Examples/fontl.c (63%) rewrite WINGs/Examples/puzzle.c (92%) rewrite WINGs/Examples/server.c (94%) rewrite WINGs/Extras/test.c (91%) rewrite WINGs/Extras/wtabledelegates.c (94%) rewrite WINGs/Extras/wtableview.c (96%) rewrite WINGs/Tests/mywidget.c (80%) rewrite WINGs/Tests/testmywidget.c (85%) rewrite WINGs/Tests/wmfile.c (79%) rewrite WINGs/Tests/wmquery.c (89%) rewrite WINGs/Tests/wtest.c (94%) rewrite WINGs/array.c (92%) rewrite WINGs/bagtree.c (96%) rewrite WINGs/configuration.c (90%) rewrite WINGs/connection.c (85%) rewrite WINGs/data.c (84%) rewrite WINGs/dragcommon.c (93%) rewrite WINGs/dragdestination.c (85%) rewrite WINGs/dragsource.c (90%) rewrite WINGs/findfile.c (80%) rewrite WINGs/handlers.c (80%) rewrite WINGs/hashtable.c (89%) rewrite WINGs/host.c (77%) rewrite WINGs/memory.c (66%) rewrite WINGs/notification.c (92%) rewrite WINGs/proplist.c (94%) rewrite WINGs/puzzle.c (89%) rewrite WINGs/selection.c (95%) rewrite WINGs/snprintf.c (81%) rewrite WINGs/string.c (89%) rewrite WINGs/tree.c (95%) rewrite WINGs/userdefaults.c (92%) rewrite WINGs/usleep.c (61%) rewrite WINGs/wapplication.c (93%) rewrite WINGs/wappresource.c (94%) rewrite WINGs/wballoon.c (93%) rewrite WINGs/wbox.c (94%) rewrite WINGs/wbrowser.c (95%) rewrite WINGs/wbutton.c (95%) rewrite WINGs/wcolor.c (92%) rewrite WINGs/wcolorpanel.c (94%) rewrite WINGs/wcolorwell.c (92%) rewrite WINGs/wevent.c (89%) rewrite WINGs/wfilepanel.c (95%) rewrite WINGs/wfont.c (94%) rewrite WINGs/wfont_noxft.c (93%) rewrite WINGs/wfont_wchar.c (92%) rewrite WINGs/wfontpanel.c (92%) rewrite WINGs/wframe.c (95%) rewrite WINGs/widgets.c (90%) rewrite WINGs/winputmethod.c (96%) rewrite WINGs/wlabel.c (93%) rewrite WINGs/wlist.c (95%) rewrite WINGs/wmenuitem.c (94%) rewrite WINGs/wmisc.c (96%) rewrite WINGs/wpanel.c (98%) rewrite WINGs/wpixmap.c (96%) rewrite WINGs/wpopupbutton.c (97%) rewrite WINGs/wprogressindicator.c (88%) rewrite WINGs/wruler.c (90%) rewrite WINGs/wscroller.c (93%) rewrite WINGs/wscrollview.c (97%) rewrite WINGs/wslider.c (96%) rewrite WINGs/wsplitview.c (91%) rewrite WINGs/wtabview.c (96%) rewrite WINGs/wtext.c (95%) rewrite WINGs/wtextfield.c (94%) rewrite WINGs/wutil.c (84%) rewrite WINGs/wview.c (93%) rewrite WINGs/wwindow.c (94%) rewrite WPrefs.app/Appearance.c (93%) rewrite WPrefs.app/Configurations.c (89%) rewrite WPrefs.app/Expert.c (75%) rewrite WPrefs.app/Focus.c (87%) rewrite WPrefs.app/Font.c (94%) rewrite WPrefs.app/FontSimple.c (88%) rewrite WPrefs.app/Icons.c (86%) rewrite WPrefs.app/KeyboardSettings.c (78%) rewrite WPrefs.app/KeyboardShortcuts.c (92%) rewrite WPrefs.app/Menu.c (94%) rewrite WPrefs.app/MenuPreferences.c (80%) rewrite WPrefs.app/MouseSettings.c (92%) rewrite WPrefs.app/Paths.c (88%) rewrite WPrefs.app/Preferences.c (86%) rewrite WPrefs.app/TexturePanel.c (93%) rewrite WPrefs.app/Themes.c (79%) rewrite WPrefs.app/WPrefs.c (92%) rewrite WPrefs.app/WindowHandling.c (88%) rewrite WPrefs.app/Workspace.c (86%) rewrite WPrefs.app/double.c (89%) rewrite WPrefs.app/editmenu.c (93%) rewrite WPrefs.app/imagebrowser.c (68%) rewrite WPrefs.app/main.c (74%) rewrite src/actions.c (91%) rewrite src/appicon.c (90%) rewrite src/application.c (86%) rewrite src/appmenu.c (83%) rewrite src/balloon.c (88%) rewrite src/client.c (85%) rewrite src/colormap.c (71%) rewrite src/cycling.c (82%) rewrite src/defaults.c (90%) rewrite src/dialog.c (92%) rewrite src/dock.c (95%) rewrite src/dockedapp.c (89%) rewrite src/event.c (88%) rewrite src/framewin.c (93%) rewrite src/geomview.c (96%) rewrite src/icon.c (91%) rewrite src/main.c (76%) rewrite src/menu.c (93%) rewrite src/menureader.c (80%) rewrite src/misc.c (90%) rewrite src/monitor.c (64%) rewrite src/motif.c (64%) rewrite src/moveres.c (93%) rewrite src/pixmap.c (64%) rewrite src/placement.c (88%) rewrite src/properties.c (79%) rewrite src/rootmenu.c (86%) rewrite src/screen.c (85%) rewrite src/session.c (85%) rewrite src/stacking.c (76%) rewrite src/startup.c (80%) rewrite src/superfluous.c (90%) rewrite src/switchmenu.c (86%) rewrite src/switchpanel.c (89%) rewrite src/texture.c (91%) rewrite src/usermenu.c (74%) rewrite src/wcore.c (63%) rewrite src/wdefaults.c (80%) rewrite src/window.c (91%) rewrite src/winmenu.c (88%) rewrite src/winspector.c (92%) rewrite src/wmspec.c (89%) rewrite src/workspace.c (91%) rewrite src/wsmap.c (84%) rewrite src/wsound.c (71%) rewrite src/xdnd.c (88%) rewrite src/xinerama.c (75%) rewrite src/xutil.c (78%) rewrite test/notest.c (88%) rewrite test/wtest.c (84%) rewrite util/convertfonts.c (72%) rewrite util/directjpeg.c (77%) rewrite util/fontconv.c (89%) rewrite util/geticonset.c (69%) rewrite util/getstyle.c (89%) rewrite util/seticons.c (73%) rewrite util/setstyle.c (89%) rewrite util/wdwrite.c (60%) rewrite util/wmagnify.c (93%) rewrite util/wmsetbg.c (92%) rewrite util/wmsetup.c (85%) rewrite util/wxcopy.c (85%) rewrite util/wxpaste.c (82%) rewrite wmlib/command.c (61%) rewrite wmlib/menu.c (81%) rewrite wrlib/CrCmap.c (79%) rewrite wrlib/LookupCmap.c (66%) rewrite wrlib/StdCmap.c (69%) rewrite wrlib/alloca.c (64%) rewrite wrlib/color.c (60%) rewrite wrlib/context.c (90%) rewrite wrlib/convert.c (91%) rewrite wrlib/convolve.c (80%) rewrite wrlib/draw.c (89%) rewrite wrlib/gif.c (81%) rewrite wrlib/gradient.c (84%) rewrite wrlib/jpeg.c (61%) rewrite wrlib/load.c (73%) rewrite wrlib/misc.c (84%) rewrite wrlib/nxpm.c (84%) rewrite wrlib/png.c (77%) rewrite wrlib/ppm.c (72%) rewrite wrlib/raster.c (89%) rewrite wrlib/rotate.c (81%) rewrite wrlib/scale.c (85%) rewrite wrlib/tests/testdraw.c (96%) rewrite wrlib/tests/testgrad.c (92%) rewrite wrlib/tests/testrot.c (81%) rewrite wrlib/tests/view.c (89%) rewrite wrlib/tiff.c (72%) rewrite wrlib/x86_specific.c (94%) rewrite wrlib/xpixmap.c (72%) rewrite wrlib/xpm.c (86%) rewrite wrlib/xutil.c (83%) diff --git a/WINGs/Examples/colorpick.c b/WINGs/Examples/colorpick.c dissimilarity index 78% index ae1695e4..24daa2ce 100644 --- a/WINGs/Examples/colorpick.c +++ b/WINGs/Examples/colorpick.c @@ -1,42 +1,39 @@ - -#include -#include -#include - - - -void showSelectedColor(void *self, void *cdata) -{ - WMColorPanel *panel= (WMColorPanel*)self; - - printf("Selected Color: %s\n", WMGetColorRGBDescription(WMGetColorPanelColor(panel))); -} - - -int main(int argc, char **argv) -{ - Display *dpy; - WMScreen *scr; - - WMInitializeApplication("wmcolorpick", &argc, argv); - - dpy = XOpenDisplay(""); - if (!dpy) { - printf("could not open display\n"); - exit(1); - } - - scr = WMCreateScreen(dpy, DefaultScreen(dpy)); - - { - WMColorPanel *panel= WMGetColorPanel(scr); - - WMSetColorPanelAction(panel, showSelectedColor, NULL); - - WMShowColorPanel(panel); - } - - WMScreenMainLoop(scr); - - return 0; -} + +#include +#include +#include + +void showSelectedColor(void *self, void *cdata) +{ + WMColorPanel *panel = (WMColorPanel *) self; + + printf("Selected Color: %s\n", WMGetColorRGBDescription(WMGetColorPanelColor(panel))); +} + +int main(int argc, char **argv) +{ + Display *dpy; + WMScreen *scr; + + WMInitializeApplication("wmcolorpick", &argc, argv); + + dpy = XOpenDisplay(""); + if (!dpy) { + printf("could not open display\n"); + exit(1); + } + + scr = WMCreateScreen(dpy, DefaultScreen(dpy)); + + { + WMColorPanel *panel = WMGetColorPanel(scr); + + WMSetColorPanelAction(panel, showSelectedColor, NULL); + + WMShowColorPanel(panel); + } + + WMScreenMainLoop(scr); + + return 0; +} diff --git a/WINGs/Examples/connect.c b/WINGs/Examples/connect.c dissimilarity index 90% index 14a2174f..9b4b93a4 100644 --- a/WINGs/Examples/connect.c +++ b/WINGs/Examples/connect.c @@ -1,198 +1,172 @@ -/* - * WINGs connect.c: example how to create a network client using WMConnection - * - * Copyright (c) 1999-2003 Dan Pascu - * - */ - - -#include -#include -#include -#include - -#include - - - -static int initialized = 0; - - - -static void didReceiveInput(ConnectionDelegate *self, WMConnection *cPtr); - -static void connectionDidDie(ConnectionDelegate *self, WMConnection *cPtr); - -static void didInitialize(ConnectionDelegate *self, WMConnection *cPtr); - - - -static ConnectionDelegate socketDelegate = { - NULL, /* data */ - NULL, /* canResumeSending */ - NULL, /* didCatchException */ - connectionDidDie, /* didDie */ - didInitialize, /* didInitialize */ - didReceiveInput, /* didReceiveInput */ - NULL /* didTimeout */ -}; - - - -void -wAbort(Bool foo) -{ - exit(1); -} - - -static char* -getMessage(WMConnection *cPtr) -{ - char *buffer; - WMData *aData; - int length; - - aData = WMGetConnectionAvailableData(cPtr); - if (!aData) - return NULL; - if ((length=WMGetDataLength(aData))==0) { - WMReleaseData(aData); - return NULL; - } - - buffer = (char*)wmalloc(length+1); - WMGetDataBytes(aData, buffer); - buffer[length]= '\0'; - WMReleaseData(aData); - - return buffer; -} - - -static void -inputHandler(int fd, int mask, void *clientData) -{ - WMConnection *cPtr = (WMConnection*)clientData; - WMData *aData; - char buf[4096]; - int n; - - if (!initialized) - return; - - n = read(fd, buf, 4096); - if (n>0) { - aData = WMCreateDataWithBytes(buf, n); - WMSendConnectionData(cPtr, aData); - WMReleaseData(aData); - } -} - - -static void -didReceiveInput(ConnectionDelegate *self, WMConnection *cPtr) -{ - char *buffer; - - buffer = getMessage(cPtr); - if (!buffer) { - fprintf(stderr, "Connection closed by peer.\n"); - exit(0); - } - - printf("%s", buffer); - - wfree(buffer); -} - - -static void -connectionDidDie(ConnectionDelegate *self, WMConnection *cPtr) -{ - WMCloseConnection(cPtr); - - fprintf(stderr, "Connection closed by peer.\n"); - exit(0); -} - - -static void -didInitialize(ConnectionDelegate *self, WMConnection *cPtr) -{ - int state = WMGetConnectionState(cPtr); - WMHost *host; - - if (state == WCConnected) { - host = WMGetHostWithAddress(WMGetConnectionAddress(cPtr)); - fprintf(stderr, "connected to '%s:%s'\n", - host?WMGetHostName(host):WMGetConnectionAddress(cPtr), - WMGetConnectionService(cPtr)); - initialized = 1; - if (host) - WMReleaseHost(host); - return; - } else { - wsyserrorwithcode(WCErrorCode, "Unable to connect"); - exit(1); - } -} - - -int -main(int argc, char **argv) -{ - char *ProgName, *host, *port; - int i; - WMConnection *sPtr; - - wsetabort(wAbort); - - WMInitializeApplication("connect", &argc, argv); - - ProgName = strrchr(argv[0],'/'); - if (!ProgName) - ProgName = argv[0]; - else - ProgName++; - - host = NULL; - port = "34567"; - - if (argc>1) { - for (i=1; i +#include +#include +#include + +#include + +static int initialized = 0; + +static void didReceiveInput(ConnectionDelegate * self, WMConnection * cPtr); + +static void connectionDidDie(ConnectionDelegate * self, WMConnection * cPtr); + +static void didInitialize(ConnectionDelegate * self, WMConnection * cPtr); + +static ConnectionDelegate socketDelegate = { + NULL, /* data */ + NULL, /* canResumeSending */ + NULL, /* didCatchException */ + connectionDidDie, /* didDie */ + didInitialize, /* didInitialize */ + didReceiveInput, /* didReceiveInput */ + NULL /* didTimeout */ +}; + +void wAbort(Bool foo) +{ + exit(1); +} + +static char *getMessage(WMConnection * cPtr) +{ + char *buffer; + WMData *aData; + int length; + + aData = WMGetConnectionAvailableData(cPtr); + if (!aData) + return NULL; + if ((length = WMGetDataLength(aData)) == 0) { + WMReleaseData(aData); + return NULL; + } + + buffer = (char *)wmalloc(length + 1); + WMGetDataBytes(aData, buffer); + buffer[length] = '\0'; + WMReleaseData(aData); + + return buffer; +} + +static void inputHandler(int fd, int mask, void *clientData) +{ + WMConnection *cPtr = (WMConnection *) clientData; + WMData *aData; + char buf[4096]; + int n; + + if (!initialized) + return; + + n = read(fd, buf, 4096); + if (n > 0) { + aData = WMCreateDataWithBytes(buf, n); + WMSendConnectionData(cPtr, aData); + WMReleaseData(aData); + } +} + +static void didReceiveInput(ConnectionDelegate * self, WMConnection * cPtr) +{ + char *buffer; + + buffer = getMessage(cPtr); + if (!buffer) { + fprintf(stderr, "Connection closed by peer.\n"); + exit(0); + } + + printf("%s", buffer); + + wfree(buffer); +} + +static void connectionDidDie(ConnectionDelegate * self, WMConnection * cPtr) +{ + WMCloseConnection(cPtr); + + fprintf(stderr, "Connection closed by peer.\n"); + exit(0); +} + +static void didInitialize(ConnectionDelegate * self, WMConnection * cPtr) +{ + int state = WMGetConnectionState(cPtr); + WMHost *host; + + if (state == WCConnected) { + host = WMGetHostWithAddress(WMGetConnectionAddress(cPtr)); + fprintf(stderr, "connected to '%s:%s'\n", + host ? WMGetHostName(host) : WMGetConnectionAddress(cPtr), WMGetConnectionService(cPtr)); + initialized = 1; + if (host) + WMReleaseHost(host); + return; + } else { + wsyserrorwithcode(WCErrorCode, "Unable to connect"); + exit(1); + } +} + +int main(int argc, char **argv) +{ + char *ProgName, *host, *port; + int i; + WMConnection *sPtr; + + wsetabort(wAbort); + + WMInitializeApplication("connect", &argc, argv); + + ProgName = strrchr(argv[0], '/'); + if (!ProgName) + ProgName = argv[0]; + else + ProgName++; + + host = NULL; + port = "34567"; + + if (argc > 1) { + for (i = 1; i < argc; i++) { + if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { + printf("usage: %s [host [port]]\n\n", ProgName); + exit(0); + } else { + if (!host) + host = argv[i]; + else + port = argv[i]; + } + } + } + + printf("Trying to make connection to '%s:%s'\n", host ? host : "localhost", port); + + sPtr = WMCreateConnectionToAddressAndNotify(host, port, NULL); + if (!sPtr) { + wfatal("could not create connection. exiting"); + exit(1); + } + + WMSetConnectionDelegate(sPtr, &socketDelegate); + + /* watch what user types and send it over the connection */ + WMAddInputHandler(0, WIReadMask, inputHandler, sPtr); + + while (1) { + WHandleEvents(); + } + + return 0; + +} diff --git a/WINGs/Examples/fontl.c b/WINGs/Examples/fontl.c dissimilarity index 63% index ad9957aa..4e1f642e 100644 --- a/WINGs/Examples/fontl.c +++ b/WINGs/Examples/fontl.c @@ -1,106 +1,98 @@ -/* - * WINGs demo: font lister - * - * Copyright (c) 1998-2003 Alfredo K. Kojima - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - * USA. - */ - - - - -#include -#include -#include -#include -#include - -void -wAbort() -{ - exit(0); -} - -void show(WMWidget *self, void *data) -{ - char buf[60]; - void *d; - WMLabel *l = (WMLabel*)data; - d = WMGetHangedData(self); - sprintf(buf, "%i - 0x%x - 0%o", (int)(uintptr_t)d, (int)(uintptr_t)d, - (int)(uintptr_t)d); - WMSetLabelText(l, buf); -} - -void quit(WMWidget *self, void *data) -{ - exit(0); -} - - -int -main(int argc, char **argv) -{ - Display *dpy; - WMWindow *win; - WMScreen *scr; - WMButton *lab, *l0=NULL; - WMLabel *pos; - int x, y, c; - char buf[20]; - - WMInitializeApplication("FontView", &argc, argv); - - dpy = XOpenDisplay(""); - if (!dpy) { - wfatal("cant open display"); - exit(0); - } - - scr = WMCreateSimpleApplicationScreen(dpy); - - win = WMCreateWindow(scr, "main"); - WMResizeWidget(win, 20*33, 20+20*9); - WMSetWindowTitle(win, "Font Chars"); - WMSetWindowCloseAction(win, quit, NULL); - pos = WMCreateLabel(win); - WMResizeWidget(pos, 20*33, 20); - WMMoveWidget(pos, 10, 5); - - c = 0; - for (y=0; y<8; y++) { - for (x=0; x<32; x++, c++) { - lab = WMCreateCustomButton(win, WBBStateLightMask); - WMResizeWidget(lab, 20, 20); - WMMoveWidget(lab, 10+x*20, 30+y*20); - sprintf(buf, "%c", c); - WMSetButtonText(lab, buf); - WMSetButtonAction(lab, show, pos); - WMHangData(lab, (void*)(uintptr_t)c); - if (c>0) { - WMGroupButtons(l0, lab); - } else { - l0 = lab; - } - } - } - WMRealizeWidget(win); - WMMapSubwidgets(win); - WMMapWidget(win); - WMScreenMainLoop(scr); - return 0; -} - +/* + * WINGs demo: font lister + * + * Copyright (c) 1998-2003 Alfredo K. Kojima + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, + * USA. + */ + +#include +#include +#include +#include +#include + +void wAbort() +{ + exit(0); +} + +void show(WMWidget * self, void *data) +{ + char buf[60]; + void *d; + WMLabel *l = (WMLabel *) data; + d = WMGetHangedData(self); + sprintf(buf, "%i - 0x%x - 0%o", (int)(uintptr_t) d, (int)(uintptr_t) d, (int)(uintptr_t) d); + WMSetLabelText(l, buf); +} + +void quit(WMWidget * self, void *data) +{ + exit(0); +} + +int main(int argc, char **argv) +{ + Display *dpy; + WMWindow *win; + WMScreen *scr; + WMButton *lab, *l0 = NULL; + WMLabel *pos; + int x, y, c; + char buf[20]; + + WMInitializeApplication("FontView", &argc, argv); + + dpy = XOpenDisplay(""); + if (!dpy) { + wfatal("cant open display"); + exit(0); + } + + scr = WMCreateSimpleApplicationScreen(dpy); + + win = WMCreateWindow(scr, "main"); + WMResizeWidget(win, 20 * 33, 20 + 20 * 9); + WMSetWindowTitle(win, "Font Chars"); + WMSetWindowCloseAction(win, quit, NULL); + pos = WMCreateLabel(win); + WMResizeWidget(pos, 20 * 33, 20); + WMMoveWidget(pos, 10, 5); + + c = 0; + for (y = 0; y < 8; y++) { + for (x = 0; x < 32; x++, c++) { + lab = WMCreateCustomButton(win, WBBStateLightMask); + WMResizeWidget(lab, 20, 20); + WMMoveWidget(lab, 10 + x * 20, 30 + y * 20); + sprintf(buf, "%c", c); + WMSetButtonText(lab, buf); + WMSetButtonAction(lab, show, pos); + WMHangData(lab, (void *)(uintptr_t) c); + if (c > 0) { + WMGroupButtons(l0, lab); + } else { + l0 = lab; + } + } + } + WMRealizeWidget(win); + WMMapSubwidgets(win); + WMMapWidget(win); + WMScreenMainLoop(scr); + return 0; +} diff --git a/WINGs/Examples/puzzle.c b/WINGs/Examples/puzzle.c dissimilarity index 92% index 21e69104..7e8b7997 100644 --- a/WINGs/Examples/puzzle.c +++ b/WINGs/Examples/puzzle.c @@ -1,245 +1,233 @@ - - - -#include -#include -#include -#include - - -#define MAX_SIZE 10*10 - - -WMWindow *win; -WMButton *Button[MAX_SIZE]; -char Map[MAX_SIZE]; -int Size = 4; -int MoveCount; - -#define MAP(x,y) Map[(x)+(y)*Size] - -int WinSize = 120; - - -Bool -CheckWin(void) -{ - int i; - - for (i = 0; i < Size*Size-1; i++) { - if (Map[i] != i) - return False; - } - - return True; -} - - -void -MoveButton(int button, int x, int y) -{ - WMMoveWidget(Button[button], x*(WinSize/Size), y*(WinSize/Size)); -} - - -Bool -SlideButton(int button) -{ - int x=0, y=0, done = 0; - - /* locate the button */ - for (y = 0; y < Size; y++) { - for (x = 0; x < Size; x++) { - if (MAP(x,y) == button) { - done = 1; - break; - } - } - if (done) - break; - } - - if (x > 0 && MAP(x-1, y) < 0) { - MAP(x,y) = -1; - MoveButton(button, x-1, y); - MAP(x-1,y) = button; - } else if (x < Size-1 && MAP(x+1, y) < 0) { - MAP(x,y) = -1; - MoveButton(button, x+1, y); - MAP(x+1,y) = button; - } else if (y > 0 && MAP(x, y-1) < 0) { - MAP(x,y) = -1; - MoveButton(button, x, y-1); - MAP(x,y-1) = button; - } else if (y < Size-1 && MAP(x, y+1) < 0) { - MAP(x,y) = -1; - MoveButton(button, x, y+1); - MAP(x,y+1) = button; - } else { - return False; - } - return True; -} - - -#define SWAP(a,b) {int tmp; tmp=a; a=b; b=tmp;} - -void ResetGame(void) -{ - int i, x, y, ox, oy; - - - MoveCount = 0; - - for (i = 0; i < Size*Size-1; i++) { - Map[i] = i; - } - Map[i] = -1; - ox = x = Size-1; - oy = y = Size-1; - for (i = 0; i < 1000; i++) { - int ok; - ok = 1; - switch (rand()%4) { - case 0: - if (x > 0) x--; else ok = 0; - break; - case 2: - if (x < Size-1) x++; else ok = 0; - break; - case 1: - if (y > 0) y--; else ok = 0; - break; - case 3: - if (y < Size-1) y++; else ok = 0; - break; - } - if (ok) { - MoveButton(MAP(x,y), ox, oy); - - SWAP(MAP(ox, oy), MAP(x, y)); - - while (XPending(WMScreenDisplay(WMWidgetScreen(win)))) { - XEvent ev; - WMNextEvent(WMScreenDisplay(WMWidgetScreen(win)), &ev); - WMHandleEvent(&ev); - } - ox = x; - oy = y; - } - } -} - - -void buttonClick(WMWidget *w, void *ptr) -{ - char buffer[300]; - - if (SlideButton((int)(uintptr_t)ptr)) { - MoveCount++; - - if (CheckWin()) { - sprintf(buffer, "You finished the game in %i moves.", MoveCount); - - if (WMRunAlertPanel(WMWidgetScreen(w), win, "You Won!", buffer, - "Wee!", "Gah! Lemme retry!", NULL) == WAPRDefault) { - exit(0); - } - - ResetGame(); - } - } -} - - -static void resizeObserver(void *self, WMNotification *notif) -{ - WMSize size = WMGetViewSize(WMWidgetView(win)); - int x, y; - - WinSize = size.width; - for (y = 0; y < Size; y++) { - for (x = 0; x < Size; x++) { - if (MAP(x,y) >= 0) { - WMResizeWidget(Button[(int)MAP(x,y)], - WinSize/Size, WinSize/Size); - WMMoveWidget(Button[(int)MAP(x,y)], - x*(WinSize/Size), y*(WinSize/Size)); - } - } - } - -} - - -int main(int argc, char **argv) -{ - Display *dpy; - WMScreen *scr; - int x, y, i; - - WMInitializeApplication("Puzzle", &argc, argv); - - - dpy = XOpenDisplay(""); - if (!dpy) { - printf("could not open display\n"); - exit(1); - } - - scr = WMCreateScreen(dpy, DefaultScreen(dpy)); - - win = WMCreateWindow(scr, "puzzle"); - WMResizeWidget(win, WinSize, WinSize); - WMSetWindowTitle(win, "zuPzel"); - WMSetWindowMinSize(win, 80, 80); - WMSetWindowAspectRatio(win, 2, 2, 2, 2); - WMSetWindowResizeIncrements(win, Size, Size); - WMSetViewNotifySizeChanges(WMWidgetView(win), True); - WMAddNotificationObserver(resizeObserver, NULL, - WMViewSizeDidChangeNotification, - WMWidgetView(win)); - - - - for (i = y = 0; y < Size && i < Size*Size-1; y++) { - for (x = 0; x < Size && i < Size*Size-1; x++) { - char buf[32]; - WMColor *color; - RColor col; - RHSVColor hsv; - - hsv.hue = i*360/(Size*Size-1); - hsv.saturation = 120; - hsv.value = 200; - - RHSVtoRGB(&hsv, &col); - - color = WMCreateRGBColor(scr, col.red<<8, col.green<<8, - col.blue<<8, False); - - MAP(x,y) = i; - Button[i] = WMCreateButton(win, WBTMomentaryLight); - WMSetWidgetBackgroundColor(Button[i], color); - WMReleaseColor(color); - WMSetButtonAction(Button[i], buttonClick, (void*)(uintptr_t)i); - WMResizeWidget(Button[i], WinSize/Size, WinSize/Size); - WMMoveWidget(Button[i], x*(WinSize/Size), y*(WinSize/Size)); - sprintf(buf, "%i", i+1); - WMSetButtonText(Button[i], buf); - WMSetButtonTextAlignment(Button[i], WACenter); - i++; - } - } - - WMMapSubwidgets(win); - WMMapWidget(win); - WMRealizeWidget(win); - - ResetGame(); - - WMScreenMainLoop(scr); - - return 0; -} - + +#include +#include +#include +#include + +#define MAX_SIZE 10*10 + +WMWindow *win; +WMButton *Button[MAX_SIZE]; +char Map[MAX_SIZE]; +int Size = 4; +int MoveCount; + +#define MAP(x,y) Map[(x)+(y)*Size] + +int WinSize = 120; + +Bool CheckWin(void) +{ + int i; + + for (i = 0; i < Size * Size - 1; i++) { + if (Map[i] != i) + return False; + } + + return True; +} + +void MoveButton(int button, int x, int y) +{ + WMMoveWidget(Button[button], x * (WinSize / Size), y * (WinSize / Size)); +} + +Bool SlideButton(int button) +{ + int x = 0, y = 0, done = 0; + + /* locate the button */ + for (y = 0; y < Size; y++) { + for (x = 0; x < Size; x++) { + if (MAP(x, y) == button) { + done = 1; + break; + } + } + if (done) + break; + } + + if (x > 0 && MAP(x - 1, y) < 0) { + MAP(x, y) = -1; + MoveButton(button, x - 1, y); + MAP(x - 1, y) = button; + } else if (x < Size - 1 && MAP(x + 1, y) < 0) { + MAP(x, y) = -1; + MoveButton(button, x + 1, y); + MAP(x + 1, y) = button; + } else if (y > 0 && MAP(x, y - 1) < 0) { + MAP(x, y) = -1; + MoveButton(button, x, y - 1); + MAP(x, y - 1) = button; + } else if (y < Size - 1 && MAP(x, y + 1) < 0) { + MAP(x, y) = -1; + MoveButton(button, x, y + 1); + MAP(x, y + 1) = button; + } else { + return False; + } + return True; +} + +#define SWAP(a,b) {int tmp; tmp=a; a=b; b=tmp;} + +void ResetGame(void) +{ + int i, x, y, ox, oy; + + MoveCount = 0; + + for (i = 0; i < Size * Size - 1; i++) { + Map[i] = i; + } + Map[i] = -1; + ox = x = Size - 1; + oy = y = Size - 1; + for (i = 0; i < 1000; i++) { + int ok; + ok = 1; + switch (rand() % 4) { + case 0: + if (x > 0) + x--; + else + ok = 0; + break; + case 2: + if (x < Size - 1) + x++; + else + ok = 0; + break; + case 1: + if (y > 0) + y--; + else + ok = 0; + break; + case 3: + if (y < Size - 1) + y++; + else + ok = 0; + break; + } + if (ok) { + MoveButton(MAP(x, y), ox, oy); + + SWAP(MAP(ox, oy), MAP(x, y)); + + while (XPending(WMScreenDisplay(WMWidgetScreen(win)))) { + XEvent ev; + WMNextEvent(WMScreenDisplay(WMWidgetScreen(win)), &ev); + WMHandleEvent(&ev); + } + ox = x; + oy = y; + } + } +} + +void buttonClick(WMWidget * w, void *ptr) +{ + char buffer[300]; + + if (SlideButton((int)(uintptr_t) ptr)) { + MoveCount++; + + if (CheckWin()) { + sprintf(buffer, "You finished the game in %i moves.", MoveCount); + + if (WMRunAlertPanel(WMWidgetScreen(w), win, "You Won!", buffer, + "Wee!", "Gah! Lemme retry!", NULL) == WAPRDefault) { + exit(0); + } + + ResetGame(); + } + } +} + +static void resizeObserver(void *self, WMNotification * notif) +{ + WMSize size = WMGetViewSize(WMWidgetView(win)); + int x, y; + + WinSize = size.width; + for (y = 0; y < Size; y++) { + for (x = 0; x < Size; x++) { + if (MAP(x, y) >= 0) { + WMResizeWidget(Button[(int)MAP(x, y)], WinSize / Size, WinSize / Size); + WMMoveWidget(Button[(int)MAP(x, y)], x * (WinSize / Size), y * (WinSize / Size)); + } + } + } + +} + +int main(int argc, char **argv) +{ + Display *dpy; + WMScreen *scr; + int x, y, i; + + WMInitializeApplication("Puzzle", &argc, argv); + + dpy = XOpenDisplay(""); + if (!dpy) { + printf("could not open display\n"); + exit(1); + } + + scr = WMCreateScreen(dpy, DefaultScreen(dpy)); + + win = WMCreateWindow(scr, "puzzle"); + WMResizeWidget(win, WinSize, WinSize); + WMSetWindowTitle(win, "zuPzel"); + WMSetWindowMinSize(win, 80, 80); + WMSetWindowAspectRatio(win, 2, 2, 2, 2); + WMSetWindowResizeIncrements(win, Size, Size); + WMSetViewNotifySizeChanges(WMWidgetView(win), True); + WMAddNotificationObserver(resizeObserver, NULL, WMViewSizeDidChangeNotification, WMWidgetView(win)); + + for (i = y = 0; y < Size && i < Size * Size - 1; y++) { + for (x = 0; x < Size && i < Size * Size - 1; x++) { + char buf[32]; + WMColor *color; + RColor col; + RHSVColor hsv; + + hsv.hue = i * 360 / (Size * Size - 1); + hsv.saturation = 120; + hsv.value = 200; + + RHSVtoRGB(&hsv, &col); + + color = WMCreateRGBColor(scr, col.red << 8, col.green << 8, col.blue << 8, False); + + MAP(x, y) = i; + Button[i] = WMCreateButton(win, WBTMomentaryLight); + WMSetWidgetBackgroundColor(Button[i], color); + WMReleaseColor(color); + WMSetButtonAction(Button[i], buttonClick, (void *)(uintptr_t) i); + WMResizeWidget(Button[i], WinSize / Size, WinSize / Size); + WMMoveWidget(Button[i], x * (WinSize / Size), y * (WinSize / Size)); + sprintf(buf, "%i", i + 1); + WMSetButtonText(Button[i], buf); + WMSetButtonTextAlignment(Button[i], WACenter); + i++; + } + } + + WMMapSubwidgets(win); + WMMapWidget(win); + WMRealizeWidget(win); + + ResetGame(); + + WMScreenMainLoop(scr); + + return 0; +} diff --git a/WINGs/Examples/server.c b/WINGs/Examples/server.c dissimilarity index 94% index d0d0e454..e747a1f5 100644 --- a/WINGs/Examples/server.c +++ b/WINGs/Examples/server.c @@ -1,740 +1,661 @@ -/* - * WINGs server.c: example how to create a network server using WMConnection - * - * Copyright (c) 2001-2003 Dan Pascu - * - */ - - -#include -#include -#include -#include - -#include - - -#define _(P) P -#define MAXCMD_SIZE 512 - - -char *SEConnectionShouldBeRemovedNotification = "SEConnectionShouldBeRemovedNotification"; - - - - -static void didReceiveInput(ConnectionDelegate *self, WMConnection *cPtr); - -static void connectionDidDie(ConnectionDelegate *self, WMConnection *cPtr); - -static void connectionDidTimeout(ConnectionDelegate *self, WMConnection *cPtr); - - -extern char *SEConnectionShouldBeRemovedNotification; - -static WMUserDefaults *timeDB = NULL; -static char *ServerAddress = NULL; -static char *ServerPort = NULL; -static WMArray *allowedHostList = NULL; -static WMArray *clientConnections = NULL; -static WMConnection *serverPtr = NULL; - - - -static ConnectionDelegate socketDelegate = { - NULL, /* client data */ - NULL, /* canResumeSending */ - NULL, /* didCatchException */ - connectionDidDie, /* didDie */ - NULL, /* didInitialize */ - didReceiveInput, /* didReceiveInput */ - connectionDidTimeout /* didTimeout */ -}; - - - -void -wAbort(Bool foo) -{ - exit(1); -} - - -static void -printHelp(char *progname) -{ - printf(_("usage: %s [options]\n\n"), progname); - puts(_(" --help print this message")); - puts(_(" --listen [address:]port only listen on the specified address/port")); - puts(_(" --allow host1[,host2...] only allow connections from listed hosts\n")); - puts(_(" By default server listens on all interfaces and port 34567, unless" - " something\nelse is specified with the --listen option. If address is" - " omitted or the keyword\n'Any' is used, it will listen on all interfaces else" - " only on the specified one.\n\nFor example --listen localhost: will" - " listen on the default port 34567, but only\non connections comming" - " in through the loopback interface.\n\n Also by default the server" - " listens to incoming connections from any host,\nunless a list of" - " hosts is given with the --allow option, in which case it will\nreject" - " connections not comming from those hosts.\nThe list of hosts is comma" - " separated and should NOT contain ANY spaces.")); -} - - -static void -enqueueConnectionForRemoval(WMConnection *cPtr) -{ - WMNotification *notif; - - /*don't release notif here. it will be released by queue after processing */ - notif = WMCreateNotification(SEConnectionShouldBeRemovedNotification, - cPtr, NULL); - WMEnqueueNotification(WMGetDefaultNotificationQueue(), notif, WMPostASAP); -} - - -static int -sendMessage(WMConnection *cPtr, char *message) -{ - WMData *aData; - int res; - - if (WMGetConnectionState(cPtr)!=WCConnected) - return -1; - - aData = WMCreateDataWithBytes(message, strlen(message)); - res = WMSendConnectionData(cPtr, aData); - WMReleaseData(aData); - - return res; -} - - -static Bool -enqueueMessage(WMConnection *cPtr, char *message) -{ - WMData *aData; - Bool res; - - if (WMGetConnectionState(cPtr)!=WCConnected) - return False; - - aData = WMCreateDataWithBytes(message, strlen(message)); - res = WMEnqueueConnectionData(cPtr, aData); - WMReleaseData(aData); - - return res; -} - - -static char* -findDelimiter(char *data, const char *endPtr) -{ - wassertrv(data < endPtr, NULL); - - while (data MAXCMD_SIZE) { - /* Hmmm... The message is too long. Possibly that someone is - * flooding us, or there is a dumb client which do not know - * who is talking to. */ - sendMessage(cPtr, "Command too long\n\r"); - WMFreeArray(messages); - WMReleaseData(aData); - WMCloseConnection(cPtr); - enqueueConnectionForRemoval(cPtr); - return NULL; - } - buffer = wmalloc(range.count+1); - WMGetDataBytesWithRange(aData, buffer, range); - buffer[range.count] = '\0'; - WMAddToArray(messages, buffer); - crtPos = ptr; - while (crtPos MAXCMD_SIZE) { - /* Flooooooding!!!! */ - sendMessage(cPtr, "Message too long\n\r"); - WMFreeArray(messages); - WMReleaseData(aData); - WMCloseConnection(cPtr); - enqueueConnectionForRemoval(cPtr); - return NULL; - } - holdData = WMGetSubdataWithRange(aData, range); - WMSetConnectionClientData(cPtr, holdData); - } - WMReleaseData(aData); - - if (WMGetArrayItemCount(messages)==0) { - WMFreeArray(messages); - messages = NULL; - } - return messages; -} - - - -static void -complainAboutBadArgs(WMConnection *cPtr, char *cmdName, char *badArgs) -{ - char *buf = wmalloc(strlen(cmdName) + strlen(badArgs) + 100); - - sprintf(buf, _("Invalid parameters '%s' for command %s. Use HELP for" - " a list of commands.\n"), badArgs, cmdName); - sendMessage(cPtr, buf); - wfree(buf); -} - - -static void -sendUpdateMessage(WMConnection *cPtr, char *id, int time) -{ - char *buf = wmalloc(strlen(id) + 100); - - sprintf(buf, "%s has %i minutes left\n", id, time); - sendMessage(cPtr, buf); - wfree(buf); -} - - -static void -showId(WMConnection *cPtr) -{ - sendMessage(cPtr, "Server example based on WMConnection\n"); -} - - -static void -showHelp(WMConnection *cPtr) -{ - char *buf = wmalloc(strlen(WMGetApplicationName()) + 16); - - sprintf(buf, _("%s commands:\n\n"), WMGetApplicationName()); - - enqueueMessage(cPtr, _("\n")); - enqueueMessage(cPtr, buf); - enqueueMessage(cPtr, _("GET \t- return time left (in minutes) " - "for user with id \n")); - enqueueMessage(cPtr, _("SET