diff options
author | Michael Nottebrock <lofi@FreeBSD.org> | 2005-02-16 12:14:43 +0000 |
---|---|---|
committer | Michael Nottebrock <lofi@FreeBSD.org> | 2005-02-16 12:14:43 +0000 |
commit | 2554fb56138d3faab507e9fcf2bda3523f5262cd (patch) | |
tree | aa5034d162e1f782ac13d386a37edb5b1a5c8cfd /misc/kdeedu3 | |
parent | 1df853853dcbf2c1dc1bad3bb1e81d58b5ff057d (diff) | |
download | ports-2554fb56138d3faab507e9fcf2bda3523f5262cd.tar.gz ports-2554fb56138d3faab507e9fcf2bda3523f5262cd.zip |
Notes
Diffstat (limited to 'misc/kdeedu3')
-rw-r--r-- | misc/kdeedu3/Makefile | 1 | ||||
-rw-r--r-- | misc/kdeedu3/files/patch-kstars-3_3 | 1925 | ||||
-rw-r--r-- | misc/kdeedu3/files/patch-kstars_kstars_indi_Makefile.in | 10 |
3 files changed, 1936 insertions, 0 deletions
diff --git a/misc/kdeedu3/Makefile b/misc/kdeedu3/Makefile index a523deb89de6..7d948943aebd 100644 --- a/misc/kdeedu3/Makefile +++ b/misc/kdeedu3/Makefile @@ -7,6 +7,7 @@ PORTNAME= kdeedu PORTVERSION= ${KDE_VERSION} +PORTREVISION= 1 CATEGORIES?= misc kde MASTER_SITES= ${MASTER_SITE_KDE} MASTER_SITE_SUBDIR= stable/${PORTVERSION:S/.0//}/src diff --git a/misc/kdeedu3/files/patch-kstars-3_3 b/misc/kdeedu3/files/patch-kstars-3_3 new file mode 100644 index 000000000000..ec34e236e7bd --- /dev/null +++ b/misc/kdeedu3/files/patch-kstars-3_3 @@ -0,0 +1,1925 @@ +Index: devicemanager.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/devicemanager.cpp,v +retrieving revision 1.14 +diff -u -3 -d -p -r1.14 devicemanager.cpp +--- kstars/kstars/devicemanager.cpp 28 Jun 2004 04:46:45 -0000 1.14 ++++ kstars/kstars/devicemanager.cpp 6 Feb 2005 18:38:31 -0000 +@@ -17,6 +17,7 @@ + #include "indiproperty.h" + #include "indigroup.h" + #include "indidevice.h" ++#include "indi/indicom.h" + #include "kstars.h" + #include "kstarsdatetime.h" + +@@ -136,50 +137,51 @@ bool DeviceManager::indiConnect(QString + void DeviceManager::dataReceived() + { + char ibuf[32]; /* not so much user input lags */ +- char msg[1024]; ++ char errmsg[ERRMSG_SIZE]; + int i, nr; + + /* read INDI command */ +- nr = read (serverFD, ibuf, sizeof(ibuf)); ++ nr = read (serverFD, ibuf, sizeof(ibuf)-1); + if (nr <= 0) + { + if (nr < 0) +- sprintf (msg, "INDI: input error."); ++ strcpy (errmsg, "INDI: input error."); + else +- sprintf (msg, "INDI: agent closed connection."); ++ strcpy (errmsg, "INDI: agent closed connection."); + + + tcflush(serverFD, TCIFLUSH); + sNotifier->disconnect(); + close(serverFD); + parent->removeDeviceMgr(mgrID); +- KMessageBox::error(0, QString(msg)); ++ KMessageBox::error(0, QString::fromLatin1(errmsg)); + + return; + } + ++ ibuf[ sizeof( ibuf )-1 ] = '\0'; ++ + /* process each char */ + for (i = 0; i < nr; i++) + { + if (!XMLParser) + return; + +- XMLEle *root = readXMLEle (XMLParser, (int)ibuf[i], msg); ++ XMLEle *root = readXMLEle (XMLParser, (int)ibuf[i], errmsg); + if (root) + { + //prXMLEle (stdout, root, 0); +- if (dispatchCommand(root, msg) < 0) ++ if (dispatchCommand(root, errmsg) < 0) + { +- //kdDebug() << msg << endl; +- fprintf(stderr, msg); ++ fprintf(stderr, "%s", errmsg); + prXMLEle (stdout, root, 0); + } + + delXMLEle (root); + } +- else if (msg[0]) ++ else if (*errmsg) + { +- kdDebug() << msg << endl; ++ kdDebug() << errmsg << endl; + } + } + } +@@ -271,7 +273,7 @@ int DeviceManager::removeDevice(QString + } + } + +- sprintf(errmsg, "Device %s not found" , devName.ascii()); ++ snprintf(errmsg, ERRMSG_SIZE, "Device %.32s not found" , devName.ascii()); + return -1; + } + +@@ -284,7 +286,7 @@ INDI_D * DeviceManager::findDev (QString + return (indi_dev.at(i)); + } + +- sprintf (errmsg, "INDI: no such device %s", devName.ascii()); ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: no such device %.32s", devName.ascii()); + kdDebug() << errmsg; + + return NULL; +@@ -342,7 +344,7 @@ INDI_D * DeviceManager::findDev (XMLEle + return (addDevice (root, errmsg)); + + +- sprintf (errmsg, "INDI: <%s> no such device %s", tagXMLEle(root), dn); ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.32s> no such device %.32s", tagXMLEle(root), dn); + return NULL; + } + +Index: indidevice.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indidevice.cpp,v +retrieving revision 1.32 +diff -u -3 -d -p -r1.32 indidevice.cpp +--- kstars/kstars/indidevice.cpp 11 Jun 2004 10:19:14 -0000 1.32 ++++ kstars/kstars/indidevice.cpp 6 Feb 2005 18:38:32 -0000 +@@ -172,7 +172,7 @@ int INDI_D::setAnyCmd (XMLEle *root, cha + pp = findProp (valuXMLAtt(ap)); + if (!pp) + { +- sprintf (errmsg,"INDI: <%s> device %s has no property named %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.32s> device %.32s has no property named %.64s", + tagXMLEle(root), name.ascii(), valuXMLAtt(ap)); + return (-1); + } +@@ -197,7 +197,7 @@ int INDI_D::setValue (INDI_P *pp, XMLEle + pp->drawLt (pp->state); + else + { +- sprintf (errmsg, "INDI: <%s> bogus state %s for %s %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> bogus state %.64s for %.64s %.64s", + tagXMLEle(root), valuXMLAtt(ap), name.ascii(), pp->name.ascii()); + return (-1); + } +@@ -265,7 +265,7 @@ int INDI_D::setTextValue (INDI_P *pp, XM + + if (!lp) + { +- sprintf(errmsg, "Error: unable to find element '%s' in property '%s'", elementName.ascii(), pp->name.ascii()); ++ snprintf(errmsg, ERRMSG_SIZE, "Error: unable to find element '%.64s' in property '%.64s'", elementName.ascii(), pp->name.ascii()); + return (-1); + } + +@@ -360,7 +360,7 @@ int INDI_D::setLabelState (INDI_P *pp, X + /* no name */ + if (!ap) + { +- sprintf (errmsg, "INDI: <%s> %s %s %s requires name", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> %.64s %.64s %.64s requires name", + tagXMLEle(root), name.ascii(), pp->name.ascii(), tagXMLEle(ep)); + return (-1); + } +@@ -368,7 +368,7 @@ int INDI_D::setLabelState (INDI_P *pp, X + if ((islight && crackLightState (pcdataXMLEle(ep), &state) < 0) + || (!islight && crackSwitchState (pcdataXMLEle(ep), &state) < 0)) + { +- sprintf (errmsg, "INDI: <%s> unknown state %s for %s %s %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> unknown state %.64s for %.64s %.64s %.64s", + tagXMLEle(root), pcdataXMLEle(ep), name.ascii(), pp->name.ascii(), tagXMLEle(ep)); + return (-1); + } +@@ -379,7 +379,7 @@ int INDI_D::setLabelState (INDI_P *pp, X + + if (!lp) + { +- sprintf (errmsg,"INDI: <%s> %s %s has no choice named %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> %.64s %.64s has no choice named %.64s", + tagXMLEle(root), name.ascii(), pp->name.ascii(), valuXMLAtt(ap)); + return (-1); + } +@@ -409,7 +409,7 @@ int INDI_D::setLabelState (INDI_P *pp, X + { + if (menuChoice) + { +- sprintf(errmsg, "INDI: <%s> %s %s has multiple ON states", tagXMLEle(root), name.ascii(), pp->name.ascii()); ++ snprintf(errmsg, ERRMSG_SIZE, "INDI: <%.64s> %.64s %.64s has multiple ON states", tagXMLEle(root), name.ascii(), pp->name.ascii()); + return (-1); + } + menuChoice = 1; +@@ -470,7 +470,7 @@ INDI_P * INDI_D::addProperty (XMLEle *ro + + if (findProp (valuXMLAtt(ap))) + { +- sprintf (errmsg, "INDI: <%s %s %s> already exists.\n", tagXMLEle(root), ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s %.64s %.64s> already exists.\n", tagXMLEle(root), + name.ascii(), valuXMLAtt(ap)); + return NULL; + } +@@ -492,7 +492,7 @@ INDI_P * INDI_D::addProperty (XMLEle *ro + + if (crackLightState (valuXMLAtt(ap), &pp->state) < 0) + { +- sprintf (errmsg, "INDI: <%s> bogus state %s for %s %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> bogus state %.64s for %.64s %.64s", + tagXMLEle(root), valuXMLAtt(ap), pp->pg->dp->name.ascii(), pp->name.ascii()); + delete(pp); + return (NULL); +@@ -544,7 +544,7 @@ INDI_G * INDI_D::findGroup (QString gro + return curGroup; + } + +- sprintf (errmsg, "INDI: group %s not found in %s", grouptag.ascii(), name.ascii()); ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: group %.64s not found in %.64s", grouptag.ascii(), name.ascii()); + return NULL; + } + +@@ -559,7 +559,7 @@ INDI_G * INDI_D::findGroup (QString gro + + ap = findXMLAtt(root, "perm"); + if (!ap) { +- sprintf (errmsg, "INDI: <%s %s %s> missing attribute 'perm'", ++ snprintf (errmsg, ERRMSG_SIZE,"INDI: <%.64s %.64s %.64s> missing attribute 'perm'", + tagXMLEle(root), pp->pg->dp->name.ascii(), pp->name.ascii()); + return (-1); + } +@@ -570,7 +570,7 @@ INDI_G * INDI_D::findGroup (QString gro + else if (!strcmp(valuXMLAtt(ap), "rw") || !strcmp(valuXMLAtt(ap), "w")) + *permp = PP_RW; + else { +- sprintf (errmsg, "INDI: <%s> unknown perm %s for %s %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> unknown perm %.64s for %.64s %.64s", + tagXMLEle(root), valuXMLAtt(ap), pp->pg->dp->name.ascii(), pp->name.ascii()); + return (-1); + } +@@ -769,7 +769,7 @@ int INDI_D::buildSwitchesGUI (XMLEle *ro + return (err); + } + +- sprintf (errmsg, "INDI: <%s> unknown rule %s for %s %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> unknown rule %.64s for %.64s %.64s", + tagXMLEle(root), valuXMLAtt(ap), name.ascii(), pp->name.ascii()); + + delete(pp); +Index: indidriver.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indidriver.cpp,v +retrieving revision 1.27 +diff -u -3 -d -p -r1.27 indidriver.cpp +--- kstars/kstars/indidriver.cpp 28 Jun 2004 04:46:46 -0000 1.27 ++++ kstars/kstars/indidriver.cpp 6 Feb 2005 18:38:32 -0000 +@@ -19,6 +19,7 @@ + #include "indihostconf.h" + #include "devicemanager.h" + #include "indidevice.h" ++#include "indi/indicom.h" + + #include "kstars.h" + #include "kstarsdata.h" +@@ -532,7 +533,7 @@ bool INDIDriver::buildDeviceGroup(XMLEle + + if (!ap) + { +- sprintf(errmsg, "Tag %s does not have a group attribute", tagXMLEle(root)); ++ snprintf(errmsg, ERRMSG_SIZE, "Tag %.64s does not have a group attribute", tagXMLEle(root)); + return false; + } + +@@ -580,7 +581,7 @@ bool INDIDriver::buildDriverElement(XMLE + ap = findXMLAtt(root, "label"); + if (!ap) + { +- sprintf(errmsg, "Tag %s does not have a label attribute", tagXMLEle(root)); ++ snprintf(errmsg, ERRMSG_SIZE, "Tag %.64s does not have a label attribute", tagXMLEle(root)); + return false; + } + +@@ -590,7 +591,7 @@ bool INDIDriver::buildDriverElement(XMLE + ap = findXMLAtt(root, "driver"); + if (!ap) + { +- sprintf(errmsg, "Tag %s does not have a driver attribute", tagXMLEle(root)); ++ snprintf(errmsg, ERRMSG_SIZE, "Tag %.64s does not have a driver attribute", tagXMLEle(root)); + return false; + } + +@@ -833,7 +834,7 @@ IDevice::IDevice(QString inLabel, QStrin + + } + +-void IDevice::processstd(KProcess */*proc*/, char* buffer, int /*buflen*/) ++void IDevice::processstd(KProcess* /*proc*/, char* buffer, int /*buflen*/) + { + serverBuffer.append(buffer); + emit newServerInput(); +Index: indielement.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indielement.cpp,v +retrieving revision 1.4 +diff -u -3 -d -p -r1.4 indielement.cpp +--- kstars/kstars/indielement.cpp 2 Jun 2004 20:47:26 -0000 1.4 ++++ kstars/kstars/indielement.cpp 6 Feb 2005 18:38:32 -0000 +@@ -42,7 +42,7 @@ XMLAtt * findAtt (XMLEle *ep, const char + if (ap) + return (ap); + if (errmsg) +- sprintf (errmsg, "INDI: <%s> missing attribute '%s'", tagXMLEle(ep),name); ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> missing attribute '%.64s'", tagXMLEle(ep),name); + return NULL; + } + +@@ -55,7 +55,7 @@ XMLEle * findEle (XMLEle *ep, INDI_P *pp + if (cp) + return (cp); + if (errmsg) +- sprintf (errmsg, "INDI: <%s %s %s> missing child '%s'", tagXMLEle(ep), ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s %.64s %.64s> missing child '%.64s'", tagXMLEle(ep), + pp->pg->dp->name.ascii(), pp->name.ascii(), child); + return (NULL); + } +Index: indiproperty.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indiproperty.cpp,v +retrieving revision 1.9 +diff -u -3 -d -p -r1.9 indiproperty.cpp +--- kstars/kstars/indiproperty.cpp 28 Jun 2004 04:46:46 -0000 1.9 ++++ kstars/kstars/indiproperty.cpp 6 Feb 2005 18:38:32 -0000 +@@ -521,7 +521,7 @@ int INDI_P::buildMenuGUI(XMLEle *root, c + + if (pg->dp->crackSwitchState (pcdataXMLEle(sep), &(lp->state)) < 0) + { +- sprintf (errmsg, "INDI: <%s> unknown state %s for %s %s %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> unknown state %.64s for %.64s %.64s %.64s", + tagXMLEle(root), valuXMLAtt(ap), name.ascii(), lp->name.ascii(), name.ascii()); + return (-1); + } +@@ -532,7 +532,7 @@ int INDI_P::buildMenuGUI(XMLEle *root, c + { + if (onItem != -1) + { +- sprintf (errmsg,"INDI: <%s> %s %s has multiple On switches", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> %.64s %.64s has multiple On switches", + tagXMLEle(root), name.ascii(), lp->name.ascii()); + return (-1); + } +@@ -602,7 +602,7 @@ int INDI_P::buildSwitchesGUI(XMLEle *roo + + if (pg->dp->crackSwitchState (pcdataXMLEle(sep), &(lp->state)) < 0) + { +- sprintf (errmsg, "INDI: <%s> unknown state %s for %s %s %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> unknown state %.64s for %.64s %.64s %.64s", + tagXMLEle(root), valuXMLAtt(ap), name.ascii(), name.ascii(), lp->name.ascii()); + return (-1); + } +@@ -700,7 +700,7 @@ int INDI_P::buildLightsGUI(XMLEle *root, + + if (pg->dp->crackLightState (pcdataXMLEle(lep), &lp->state) < 0) + { +- sprintf (errmsg, "INDI: <%s> unknown state %s for %s %s %s", ++ snprintf (errmsg, ERRMSG_SIZE, "INDI: <%.64s> unknown state %.64s for %.64s %.64s %.64s", + tagXMLEle(root), valuXMLAtt(ap), pg->dp->name.ascii(), name.ascii(), sname.ascii()); + return (-1); + } +Index: indi/Makefile.am +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/Makefile.am,v +retrieving revision 1.24 +diff -u -3 -d -p -r1.24 Makefile.am +--- kstars/kstars/indi/Makefile.am 28 Jun 2004 04:46:46 -0000 1.24 ++++ kstars/kstars/indi/Makefile.am 6 Feb 2005 18:38:34 -0000 +@@ -40,7 +40,6 @@ install-exec-hook: + $(LN_S) lx200generic $(DESTDIR)$(bindir)/lx200_16 + rm -f $(DESTDIR)$(bindir)/lx200gps + $(LN_S) lx200generic $(DESTDIR)$(bindir)/lx200gps +- chmod +s $(DESTDIR)$(bindir)/fliccd + + uninstall-local: + rm $(DESTDIR)$(bindir)/lx200autostar $(DESTDIR)$(bindir)/lx200_16 $(DESTDIR)$(bindir)/lx200gps +Index: indi/fitsrw.c +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/fitsrw.c,v +retrieving revision 1.5 +diff -u -3 -d -p -r1.5 fitsrw.c +--- kstars/kstars/indi/fitsrw.c 27 May 2004 16:14:52 -0000 1.5 ++++ kstars/kstars/indi/fitsrw.c 6 Feb 2005 18:38:35 -0000 +@@ -155,31 +155,31 @@ int fits_ieee64_motorola = 0; + + #define FITS_WRITE_BOOLCARD(fp,key,value) \ + {char card[81]; \ +- sprintf (card, "%-8.8s= %20s%50s", key, value ? "T" : "F", " "); \ ++ snprintf (card, sizeof( card ), "%-8.8s= %20s%50s", key, value ? "T" : "F", " "); \ + fwrite (card, 1, 80, fp); } + + #define FITS_WRITE_LONGCARD(fp,key,value) \ + {char card[81]; \ +- sprintf (card, "%-8.8s= %20ld%50s", key, (long)value, " "); \ ++ snprintf (card, sizeof( card ), "%-8.8s= %20ld%50s", key, (long)value, " "); \ + fwrite (card, 1, 80, fp); } + + #define FITS_WRITE_DOUBLECARD(fp,key,value) \ + {char card[81], dbl[21], *istr; \ +- sprintf (dbl, "%20f", (double)value); istr = strstr (dbl, "e"); \ ++ snprintf (dbl, sizeof( dbl ), "%20f", (double)value); istr = strstr (dbl, "e"); \ + if (istr) *istr = 'E'; \ +- sprintf (card, "%-8.8s= %20.20s%50s", key, dbl, " "); \ ++ snprintf (card, sizeof( card ), "%-8.8s= %20.20s%50s", key, dbl, " "); \ + fwrite (card, 1, 80, fp); } + + #define FITS_WRITE_STRINGCARD(fp,key,value) \ + {char card[81]; int k;\ +- sprintf (card, "%-8.8s= \'%s", key, value); \ ++ snprintf (card, sizeof( card ), "%-8.8s= \'%s", key, value); \ + for (k = strlen (card); k < 81; k++) card[k] = ' '; \ + k = strlen (key); if (k < 8) card[19] = '\''; else card[11+k] = '\''; \ + fwrite (card, 1, 80, fp); } + + #define FITS_WRITE_CARD(fp,value) \ + {char card[81]; \ +- sprintf (card, "%-80.80s", value); \ ++ snprintf (card, sizeof( card ), "%-80.80s", value); \ + fwrite (card, 1, 80, fp); } + + +@@ -474,7 +474,8 @@ static void fits_drop_error (void) + /* #END-PAR */ + /*****************************************************************************/ + +-FITS_FILE *fits_open (const char *filename, const char *openmode) ++ ++FITS_FILE *fits_open (const char* filename, const char *openmode) + + {int reading, writing, n_rec, n_hdr; + long fpos_header, fpos_data; +@@ -483,8 +484,10 @@ FITS_FILE *fits_open (const char *filena + FITS_RECORD_LIST *hdrlist; + FITS_HDU_LIST *hdulist, *last_hdulist; + +- /* initialize */ ++ if ((filename == NULL) || (*filename == '\0') || (openmode == NULL)) ++ FITS_RETURN ("fits_open: Invalid parameters", NULL); + ++ /* initialize */ + hdulist = NULL; + last_hdulist = NULL; + +@@ -506,9 +509,6 @@ FITS_FILE *fits_open (const char *filena + } + } + +- if ((filename == NULL) || (*filename == '\0') || (openmode == NULL)) +- FITS_RETURN ("fits_open: Invalid parameters", NULL); +- + reading = (strcmp (openmode, "r") == 0); + writing = (strcmp (openmode, "w") == 0); + if ((!reading) && (!writing)) +@@ -858,7 +858,7 @@ int fits_write_header (FITS_FILE *ff, FI + + for (r = 0; r < hdulist->naxis; r++) + {char naxisn[10]; +- sprintf (naxisn, "NAXIS%d", r+1); ++ snprintf (naxisn, sizeof( naxisn ), "NAXIS%d", r+1); + FITS_WRITE_LONGCARD (ff->fp, naxisn, hdulist->naxisn[r]); + numcards++; + } +@@ -1025,7 +1025,7 @@ static FITS_HDU_LIST *fits_decode_header + for (k = 1; k <= FITS_MAX_AXIS; k++) + {char naxisn[9]; + +- sprintf (naxisn, "NAXIS%-3d", k); ++ snprintf (naxisn, sizeof( naxisn ), "NAXIS%-3d", k); + fdat = fits_decode_card (fits_search_card (hdr, naxisn), typ_flong); + if (fdat == NULL) + { +@@ -1121,7 +1121,7 @@ static FITS_HDU_LIST *fits_decode_header + } + else + {char msg[160]; +- sprintf (msg, "fits_decode_header: IEEE floating point format required for\ ++ snprintf (msg, sizeof( msg ), "fits_decode_header: IEEE floating point format required for\ + BITPIX=%d\nis not supported on this machine", hdulist->bitpix); + fits_set_error (msg); + } +@@ -1130,7 +1130,7 @@ static FITS_HDU_LIST *fits_decode_header + return (hdulist); + + err_missing: +- sprintf (errmsg, "fits_decode_header: missing/invalid %s card", key); ++ snprintf (errmsg, sizeof(errmsg), "fits_decode_header: missing/invalid %.50s card", key); + + err_return: + fits_delete_hdulist (hdulist); +@@ -1429,7 +1429,7 @@ FITS_DATA *fits_decode_card (const char + + if (strncmp (card+8, "= ", 2) != 0) + { +- sprintf (msg, "fits_decode_card (warning): Missing value indicator\ ++ snprintf (msg, sizeof( msg ), "fits_decode_card (warning): Missing value indicator\ + '= ' for %8.8s", l_card); + fits_set_error (msg); + } +Index: indi/fli_ccd.c +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/fli_ccd.c,v +retrieving revision 1.12.2.1 +diff -u -3 -d -p -r1.12.2.1 fli_ccd.c +--- kstars/kstars/indi/fli_ccd.c 31 Aug 2004 05:56:45 -0000 1.12.2.1 ++++ kstars/kstars/indi/fli_ccd.c 6 Feb 2005 18:38:36 -0000 +@@ -51,9 +51,9 @@ void getBasicData(void); + void initDataChannel(void); + void waitForData(int rp, int wp); + void updateDataChannel(void *p); +-void uploadFile(char * filename); ++void uploadFile(const char* filename); + int findPort(void); +-int writeFITS(char *filename, char errmsg[]); ++int writeFITS(const char* filename, char errmsg[]); + int findcam(flidomain_t domain); + int setImageArea(char errmsg[]); + int manageDefaults(char errmsg[]); +@@ -419,7 +419,7 @@ void ISNewNumber (const char *dev, const + long err; + int i; + INumber *np; +- char errmsg[1024]; ++ char errmsg[ERRMSG_SIZE]; + + /* ignore if not ours */ + if (dev && strcmp (dev, mydev)) +@@ -556,14 +556,14 @@ void ISNewNumber (const char *dev, const + + if (nset < 4) + { +- IDSetNumber(&FrameNP, "Invalid range. Valid range is (0,0) - (%0.f,%0.f)", FLICam->width, FLICam->height); +- IDLog("Invalid range. Valid range is (0,0) - (%0.f,%0.f)", FLICam->width, FLICam->height); ++ IDSetNumber(&FrameNP, "Invalid range. Valid range is (0,0) - (%0d,%0d)", FLICam->width, FLICam->height); ++ IDLog("Invalid range. Valid range is (0,0) - (%0d,%0d)", FLICam->width, FLICam->height); + return; + } + + if (setImageArea(errmsg)) + { +- IDSetNumber(&FrameNP, errmsg); ++ IDSetNumber(&FrameNP, "%s", errmsg); + return; + } + +@@ -600,8 +600,8 @@ void ISNewNumber (const char *dev, const + { + if (values[i] < 1 || values[i] > MAX_X_BIN) + { +- IDSetNumber(&BinningNP, "Error: Valid X bin values are from 1 to %d", MAX_X_BIN); +- IDLog("Error: Valid X bin values are from 1 to %d", MAX_X_BIN); ++ IDSetNumber(&BinningNP, "Error: Valid X bin values are from 1 to %g", MAX_X_BIN); ++ IDLog("Error: Valid X bin values are from 1 to %g", MAX_X_BIN); + return; + } + +@@ -618,8 +618,8 @@ void ISNewNumber (const char *dev, const + { + if (values[i] < 1 || values[i] > MAX_Y_BIN) + { +- IDSetNumber(&BinningNP, "Error: Valid Y bin values are from 1 to %d", MAX_Y_BIN); +- IDLog("Error: Valid X bin values are from 1 to %d", MAX_Y_BIN); ++ IDSetNumber(&BinningNP, "Error: Valid Y bin values are from 1 to %g", MAX_Y_BIN); ++ IDLog("Error: Valid X bin values are from 1 to %g", MAX_Y_BIN); + return; + } + +@@ -637,7 +637,7 @@ void ISNewNumber (const char *dev, const + if (setImageArea(errmsg)) + { + IDSetNumber(&BinningNP, errmsg, NULL); +- IDLog(errmsg); ++ IDLog("%s", errmsg); + return; + } + +@@ -817,8 +817,8 @@ int setImageArea(char errmsg[]) + + if ( (err = FLISetImageArea(fli_dev, x_1, y_1, x_2, y_2) )) + { +- sprintf(errmsg, "FLISetImageArea() failed. %s.\n", strerror((int)-err)); +- IDLog(errmsg, NULL); ++ snprintf(errmsg, ERRMSG_SIZE, "FLISetImageArea() failed. %s.\n", strerror((int)-err)); ++ IDLog("%s", errmsg); + return -1; + } + +@@ -832,13 +832,13 @@ int grabImage() + { + long err; + int img_size,i, fd; +- char errmsg[1024]; ++ char errmsg[ERRMSG_SIZE]; + char filename[] = "/tmp/fitsXXXXXX"; + + if ((fd = mkstemp(filename)) < 0) + { +- IDMessage(mydev, "Error making temporary filename.", NULL); +- IDLog("Error making temporary filename.\n", NULL); ++ IDMessage(mydev, "Error making temporary filename."); ++ IDLog("Error making temporary filename.\n"); + return -1; + } + close(fd); +@@ -849,8 +849,8 @@ int grabImage() + + if (FLIImg->img == NULL) + { +- IDMessage(mydev, "Not enough memory to store image.", NULL); +- IDLog("Not enough memory to store image.\n", NULL); ++ IDMessage(mydev, "Not enough memory to store image."); ++ IDLog("Not enough memory to store image.\n"); + return -1; + } + +@@ -880,7 +880,7 @@ int grabImage() + + } + +-int writeFITS(char *filename, char errmsg[]) ++int writeFITS(const char* filename, char errmsg[]) + { + FITS_FILE* ofp; + int i, j, bpp, bpsl, width, height; +@@ -890,7 +890,7 @@ int writeFITS(char *filename, char errms + ofp = fits_open (filename, "w"); + if (!ofp) + { +- sprintf(errmsg, "Error: cannot open file for writing."); ++ snprintf(errmsg, ERRMSG_SIZE, "Error: cannot open file for writing."); + return (-1); + } + +@@ -903,12 +903,12 @@ int writeFITS(char *filename, char errms + hdu = create_fits_header (ofp, width, height, bpp); + if (hdu == NULL) + { +- sprintf(errmsg, "Error: creating FITS header failed."); ++ snprintf(errmsg, ERRMSG_SIZE, "Error: creating FITS header failed."); + return (-1); + } + if (fits_write_header (ofp, hdu) < 0) + { +- sprintf(errmsg, "Error: writing to FITS header failed."); ++ snprintf(errmsg, ERRMSG_SIZE, "Error: writing to FITS header failed."); + return (-1); + } + +@@ -932,7 +932,7 @@ int writeFITS(char *filename, char errms + + if (ferror (ofp->fp)) + { +- sprintf(errmsg, "Error: write error occured"); ++ snprintf(errmsg, ERRMSG_SIZE, "Error: write error occured"); + return (-1); + } + +@@ -951,7 +951,7 @@ int writeFITS(char *filename, char errms + + } + +-void uploadFile(char * filename) ++void uploadFile(const char* filename) + { + FILE * fitsFile; + char frameSize[FRAME_ILEN]; +@@ -962,7 +962,7 @@ void uploadFile(char * filename) + + if ( -1 == stat (filename, &stat_p)) + { +- IDLog(" Error occoured attempting to stat %s\n", filename); ++ IDLog(" Error occoured attempting to stat file.\n"); + return; + } + +@@ -1185,7 +1185,7 @@ int manageDefaults(char errmsg[]) + IDLog("Setting default exposure time of %d ms.\n", exposeTimeMS); + if ( (err = FLISetExposureTime(fli_dev, exposeTimeMS) )) + { +- sprintf(errmsg, "FLISetExposureTime() failed. %s.\n", strerror((int)-err)); ++ snprintf(errmsg, ERRMSG_SIZE, "FLISetExposureTime() failed. %s.\n", strerror((int)-err)); + IDLog(errmsg, NULL); + return -1; + } +@@ -1193,7 +1193,7 @@ int manageDefaults(char errmsg[]) + /* Default frame type is NORMAL */ + if ( (err = FLISetFrameType(fli_dev, FLI_FRAME_TYPE_NORMAL) )) + { +- sprintf(errmsg, "FLISetFrameType() failed. %s.\n", strerror((int)-err)); ++ snprintf(errmsg, ERRMSG_SIZE, "FLISetFrameType() failed. %s.\n", strerror((int)-err)); + IDLog(errmsg, NULL); + return -1; + } +@@ -1201,7 +1201,7 @@ int manageDefaults(char errmsg[]) + /* X horizontal binning */ + if ( (err = FLISetHBin(fli_dev, BinningN[0].value) )) + { +- sprintf(errmsg, "FLISetBin() failed. %s.\n", strerror((int)-err)); ++ snprintf(errmsg, ERRMSG_SIZE, "FLISetBin() failed. %s.\n", strerror((int)-err)); + IDLog(errmsg, NULL); + return -1; + } +@@ -1209,7 +1209,7 @@ int manageDefaults(char errmsg[]) + /* Y vertical binning */ + if ( (err = FLISetVBin(fli_dev, BinningN[1].value) )) + { +- sprintf(errmsg, "FLISetVBin() failed. %s.\n", strerror((int)-err)); ++ snprintf(errmsg, ERRMSG_SIZE, "FLISetVBin() failed. %s.\n", strerror((int)-err)); + IDLog(errmsg, NULL); + return -1; + } +@@ -1293,7 +1293,7 @@ int checkPowerT(ITextVectorProperty *tp) + void connectCCD() + { + long err; +- char errmsg[1024]; ++ char errmsg[ERRMSG_SIZE]; + + IDLog ("In ConnectCCD\n"); + +@@ -1332,7 +1332,7 @@ void connectCCD() + if (manageDefaults(errmsg)) + { + IDMessage(mydev, errmsg, NULL); +- IDLog(errmsg); ++ IDLog("%s", errmsg); + return; + } + +@@ -1495,7 +1495,7 @@ FITS_HDU_LIST * create_fits_header (FITS + fits_add_card (hdulist, temp_s); + fits_add_card (hdulist, expose_s); + fits_add_card (hdulist, pixel_s); +- fits_add_card (hdulist, "INSTRUME= 'Finger Lakes Instruments'"); ++ fits_add_card (hdulist, ( char* ) "INSTRUME= 'Finger Lakes Instruments'"); + fits_add_card (hdulist, obsDate); + + return (hdulist); +@@ -1632,7 +1632,7 @@ int findPort() + /* bind to given port for any IP address */ + memset (&serv_socket, 0, sizeof(serv_socket)); + serv_socket.sin_family = AF_INET; +- serv_socket.sin_addr.s_addr = htonl (INADDR_ANY); ++ serv_socket.sin_addr.s_addr = htonl (INADDR_LOOPBACK); + + for (i=0; i < 100; i++) + { +@@ -1675,7 +1675,7 @@ void waitForData(int rp, int wp) + /* bind to given port for any IP address */ + memset (&serv_socket, 0, sizeof(serv_socket)); + serv_socket.sin_family = AF_INET; +- serv_socket.sin_addr.s_addr = htonl (INADDR_ANY); ++ serv_socket.sin_addr.s_addr = htonl (INADDR_LOOPBACK); + + serv_socket.sin_port = htons ((unsigned short)DataPort); + if (setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse)) < 0){ +Index: indi/indicom.h +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/indicom.h,v +retrieving revision 1.8 +diff -u -3 -d -p -r1.8 indicom.h +--- kstars/kstars/indi/indicom.h 7 Jun 2004 05:59:20 -0000 1.8 ++++ kstars/kstars/indi/indicom.h 6 Feb 2005 18:38:36 -0000 +@@ -38,6 +38,7 @@ + + #define J2000 2451545.0 + #define TRACKING_THRESHOLD 0.05 /* 3' for tracking */ ++#define ERRMSG_SIZE 1024 + + extern const char * Direction[]; + extern const char * SolarSystem[]; +Index: indi/indidevapi.h +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/indidevapi.h,v +retrieving revision 1.5 +diff -u -3 -d -p -r1.5 indidevapi.h +--- kstars/kstars/indi/indidevapi.h 7 Jun 2004 05:59:20 -0000 1.5 ++++ kstars/kstars/indi/indidevapi.h 6 Feb 2005 18:38:36 -0000 +@@ -66,25 +66,41 @@ extern "C" { + \param t pointer to the vector text property to be defined. + \param msg message in printf style to send to the client. May be NULL. + */ +-extern void IDDefText (const ITextVectorProperty *t, const char *msg, ...); ++extern void IDDefText (const ITextVectorProperty *t, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 2, 3 ) ) ) ++#endif ++; + + /** \brief Tell client to create a number number property. + \param n pointer to the vector number property to be defined. + \param msg message in printf style to send to the client. May be NULL. + */ +-extern void IDDefNumber (const INumberVectorProperty *n, const char *msg, ...); ++extern void IDDefNumber (const INumberVectorProperty *n, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 2, 3 ) ) ) ++#endif ++; + + /** \brief Tell client to create a switch vector property. + \param s pointer to the vector switch property to be defined. + \param msg message in printf style to send to the client. May be NULL. + */ +-extern void IDDefSwitch (const ISwitchVectorProperty *s, const char *msg, ...); ++extern void IDDefSwitch (const ISwitchVectorProperty *s, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 2, 3 ) ) ) ++#endif ++; + + /** \brief Tell client to create a light vector property. + \param l pointer to the vector light property to be defined. + \param msg message in printf style to send to the client. May be NULL. + */ +-extern void IDDefLight (const ILightVectorProperty *l, const char *msg, ...); ++extern void IDDefLight (const ILightVectorProperty *l, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 2, 3 ) ) ) ++#endif ++; + + /*@}*/ + +@@ -97,25 +113,41 @@ extern void IDDefLight (const ILightVect + \param t pointer to the vector text property. + \param msg message in printf style to send to the client. May be NULL. + */ +-extern void IDSetText (const ITextVectorProperty *t, const char *msg, ...); ++extern void IDSetText (const ITextVectorProperty *t, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 2, 3 ) ) ) ++#endif ++; + + /** \brief Tell client to update an existing number vector property. + \param n pointer to the vector number property. + \param msg message in printf style to send to the client. May be NULL. + */ +-extern void IDSetNumber (const INumberVectorProperty *n, const char *msg, ...); ++extern void IDSetNumber (const INumberVectorProperty *n, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 2, 3 ) ) ) ++#endif ++; + + /** \brief Tell client to update an existing switch vector property. + \param s pointer to the vector switch property. + \param msg message in printf style to send to the client. May be NULL. + */ +-extern void IDSetSwitch (const ISwitchVectorProperty *s, const char *msg, ...); ++extern void IDSetSwitch (const ISwitchVectorProperty *s, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 2, 3 ) ) ) ++#endif ++; + + /** \brief Tell client to update an existing light vector property. + \param l pointer to the vector light property. + \param msg message in printf style to send to the client. May be NULL. + */ +-extern void IDSetLight (const ILightVectorProperty *l, const char *msg, ...); ++extern void IDSetLight (const ILightVectorProperty *l, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 2, 3 ) ) ) ++#endif ++; + + /*@}*/ + +@@ -127,7 +159,11 @@ extern void IDSetLight (const ILightVect + \param dev device name + \param msg message in printf style to send to the client. + */ +-extern void IDMessage (const char *dev, const char *msg, ...); ++extern void IDMessage (const char *dev, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 2, 3 ) ) ) ++#endif ++; + + /** \brief Function Drivers call to inform Clients a Property is no longer available, or the entire device is gone if name is NULL. + +@@ -135,7 +171,11 @@ extern void IDMessage (const char *dev, + \param name property name to be deleted. + \param msg message in printf style to send to the client. + */ +-extern void IDDelete (const char *dev, const char *name, const char *msg, ...); ++extern void IDDelete (const char *dev, const char *name, const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 3, 4 ) ) ) ++#endif ++; + + /** \brief Function Drivers call to log a message locally. + +@@ -143,7 +183,11 @@ extern void IDDelete (const char *dev, c + + \param msg message in printf style to send to the client. + */ +-extern void IDLog (const char *msg, ...); ++extern void IDLog (const char *msg, ...) ++#ifdef __GNUC__ ++ __attribute__ ( ( format( printf, 1, 2 ) ) ) ++#endif ++; + + /** + * \defgroup deventFunctions Functions Drivers call to register with the INDI event utilities. +@@ -348,5 +392,5 @@ extern void ISNewSwitch (const char *dev + #endif + + /* For RCS Only -- Do Not Edit +- * @(#) $RCSfile: indidevapi.h,v $ $Date: 2004/06/07 05:59:20 $ $Revision: 1.5 $ $Name: $ ++ * @(#) $RCSfile: indidevapi.h,v $ $Date: 2004/06/07 05:59:20 $ $Revision: 1.5 $ $Name: KDE_3_3_BRANCH $ + */ +Index: indi/indidrivermain.c +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/indidrivermain.c,v +retrieving revision 1.8 +diff -u -3 -d -p -r1.8 indidrivermain.c +--- kstars/kstars/indi/indidrivermain.c 27 May 2004 16:14:52 -0000 1.8 ++++ kstars/kstars/indi/indidrivermain.c 6 Feb 2005 18:38:36 -0000 +@@ -45,8 +45,8 @@ + + static void usage(void); + static void clientMsgCB(int fd, void *arg); +-static int dispatch (XMLEle *root, char msg[]); +-static int crackDN (XMLEle *root, char **dev, char **name, char msg[]); ++static int dispatch (XMLEle *root, char errmsg[]); ++static int crackDN (XMLEle *root, char **dev, char **name, char errmsg[]); + const char *pstateStr(IPState s); + const char *sstateStr(ISState s); + const char *ruleStr(ISRule r); +@@ -60,6 +60,9 @@ static LilXML *clixml; /* XML parser c + int + main (int ac, char *av[]) + { ++ setgid( getgid() ); ++ setuid( getuid() ); ++ + /* save handy pointer to our base name */ + for (me = av[0]; av[0][0]; av[0]++) + if (av[0][0] == '/') +@@ -177,6 +180,7 @@ IDDefNumber (const INumberVectorProperty + /* tell client to create a new switch vector property */ + void + IDDefSwitch (const ISwitchVectorProperty *s, const char *fmt, ...) ++ + { + int i; + +@@ -637,12 +641,12 @@ usage(void) + static void + clientMsgCB (int fd, void *arg) + { +- char buf[1024], msg[1024], *bp; ++ char buf[1024], errmsg[ERRMSG_SIZE], *bp; + int nr; + arg=arg; + + /* one read */ +- nr = read (fd, buf, sizeof(buf)); ++ nr = read (fd, buf, sizeof(buf)-1); + if (nr < 0) { + fprintf (stderr, "%s: %s\n", me, strerror(errno)); + exit(1); +@@ -651,26 +655,27 @@ clientMsgCB (int fd, void *arg) + fprintf (stderr, "%s: EOF\n", me); + exit(1); + } ++ buf[ sizeof( buf )-1 ] = '\0'; + + /* crack and dispatch when complete */ + for (bp = buf; nr-- > 0; bp++) { +- XMLEle *root = readXMLEle (clixml, *bp, msg); ++ XMLEle *root = readXMLEle (clixml, *bp, errmsg); + if (root) { +- if (dispatch (root, msg) < 0) +- fprintf (stderr, "%s dispatch error: %s\n", me, msg); ++ if (dispatch (root, errmsg) < 0) ++ fprintf (stderr, "%s dispatch error: %s\n", me, errmsg); + delXMLEle (root); +- } else if (msg[0]) +- fprintf (stderr, "%s XML error: %s\n", me, msg); ++ } else if (errmsg[0]) ++ fprintf (stderr, "%s XML error: %s\n", me, errmsg); + } + } + + /* crack the given INDI XML element and call driver's IS* entry points as they + * are recognized. +- * return 0 if ok else -1 with reason in msg[]. ++ * return 0 if ok else -1 with reason in errmsg[]. + * N.B. exit if getProperties does not proclaim a compatible version. + */ + static int +-dispatch (XMLEle *root, char msg[]) ++dispatch (XMLEle *root, char errmsg[]) + { + XMLEle *ep; + int n; +@@ -687,7 +692,7 @@ dispatch (XMLEle *root, char msg[]) + char *dev, *name; + + /* pull out device and name */ +- if (crackDN (root, &dev, &name, msg) < 0) ++ if (crackDN (root, &dev, &name, errmsg) < 0) + return (-1); + + /* pull out each name/value pair */ +@@ -729,7 +734,7 @@ printf ("%s\n", valuXMLAtt(na)); + /*XMLEle *ep;*/ + + /* pull out device and name */ +- if (crackDN (root, &dev, &name, msg) < 0) ++ if (crackDN (root, &dev, &name, errmsg) < 0) + return (-1); + + /* pull out each name/state pair */ +@@ -775,7 +780,7 @@ printf ("%s\n", valuXMLAtt(na)); + char *dev, *name; + + /* pull out device and name */ +- if (crackDN (root, &dev, &name, msg) < 0) ++ if (crackDN (root, &dev, &name, errmsg) < 0) + return (-1); + + /* pull out each name/text pair */ +@@ -828,28 +833,28 @@ printf ("%s\n", valuXMLAtt(na)); + return (0); + } + +- sprintf (msg, "Unknown command: %s", tagXMLEle(root)); ++ snprintf (errmsg, ERRMSG_SIZE, "Unknown command: %s", tagXMLEle(root)); + return(1); + } + + /* pull out device and name attributes from root. +- * return 0 if ok else -1 with reason in msg[]. ++ * return 0 if ok else -1 with reason in errmsg[]. + */ + static int +-crackDN (XMLEle *root, char **dev, char **name, char msg[]) ++crackDN (XMLEle *root, char **dev, char **name, char errmsg[]) + { + XMLAtt *ap; + + ap = findXMLAtt (root, "device"); + if (!ap) { +- sprintf (msg, "%s requires 'device' attribute", tagXMLEle(root)); ++ snprintf (errmsg, ERRMSG_SIZE, "%s requires 'device' attribute", tagXMLEle(root)); + return (-1); + } + *dev = valuXMLAtt(ap); + + ap = findXMLAtt (root, "name"); + if (!ap) { +- sprintf (msg, "%s requires 'name' attribute", tagXMLEle(root)); ++ snprintf (errmsg, ERRMSG_SIZE, "%s requires 'name' attribute", tagXMLEle(root)); + return (-1); + } + *name = valuXMLAtt(ap); +Index: indi/indiserver.c +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/indiserver.c,v +retrieving revision 1.6 +diff -u -3 -d -p -r1.6 indiserver.c +--- kstars/kstars/indi/indiserver.c 7 Jun 2004 05:59:20 -0000 1.6 ++++ kstars/kstars/indi/indiserver.c 6 Feb 2005 18:38:37 -0000 +@@ -288,10 +288,10 @@ indiListen () + exit(1); + } + +- /* bind to given port for any IP address */ ++ /* bind to given port for local IP address */ + memset (&serv_socket, 0, sizeof(serv_socket)); + serv_socket.sin_family = AF_INET; +- serv_socket.sin_addr.s_addr = htonl (INADDR_ANY); ++ serv_socket.sin_addr.s_addr = htonl (INADDR_LOOPBACK); + serv_socket.sin_port = htons ((unsigned short)port); + if (setsockopt(sfd,SOL_SOCKET,SO_REUSEADDR,&reuse,sizeof(reuse)) < 0){ + fprintf (stderr, "%s: setsockopt: %s", me, strerror(errno)); +@@ -423,7 +423,7 @@ clientMsg (int cli) + int i, nr; + + /* read client */ +- nr = read (cp->s, buf, sizeof(buf)); ++ nr = read (cp->s, buf, sizeof(buf)-1); + if (nr < 0) { + fprintf (stderr, "Client %d: %s\n", cp->s, strerror(errno)); + closeClient (cli); +@@ -435,6 +435,7 @@ clientMsg (int cli) + closeClient (cli); + return; + } ++ buf[ sizeof( buf )-1 ] = '\0'; + if (verbose > 1) + fprintf (stderr, "Client %d: rcv from:\n%.*s", cp->s, nr, buf); + +@@ -464,7 +465,7 @@ driverMsg (int i) + int nr; + + /* read driver */ +- nr = read (dp->rfd, buf, sizeof(buf)); ++ nr = read (dp->rfd, buf, sizeof(buf)-1); + if (nr < 0) { + fprintf (stderr, "Driver %s: %s\n", dp->name, strerror(errno)); + restartDvr (i); +@@ -475,6 +476,7 @@ driverMsg (int i) + restartDvr (i); + return; + } ++ buf[ sizeof( buf )-1 ]='\0'; + if (verbose > 1) + fprintf (stderr, "Driver %s: rcv from:\n%.*s", dp->name, nr, buf); + +@@ -591,4 +593,4 @@ newClSocket () + } + + /* For RCS Only -- Do Not Edit */ +-static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: indiserver.c,v $ $Date: 2004/06/07 05:59:20 $ $Revision: 1.6 $ $Name: $"}; ++static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: indiserver.c,v $ $Date: 2004/06/07 05:59:20 $ $Revision: 1.6 $ $Name: KDE_3_3_BRANCH $"}; +Index: indi/lilxml.c +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/lilxml.c,v +retrieving revision 1.6 +diff -u -3 -d -p -r1.6 lilxml.c +--- kstars/kstars/indi/lilxml.c 7 Jun 2004 05:59:20 -0000 1.6 ++++ kstars/kstars/indi/lilxml.c 6 Feb 2005 18:38:37 -0000 +@@ -32,6 +32,7 @@ + #include <ctype.h> + + #include "lilxml.h" ++#include "indicom.h" + + static int oneXMLchar (LilXML *lp, int c, char errmsg[]); + static void initParser(LilXML *lp); +@@ -156,7 +157,7 @@ readXMLEle (LilXML *lp, int newc, char e + + /* EOF? */ + if (newc == 0) { +- sprintf (errmsg, "Line %d: XML EOF", lp->ln); ++ snprintf (errmsg, ERRMSG_SIZE, "Line %d: XML EOF", lp->ln); + initParser(lp); + return (NULL); + } +@@ -344,7 +345,7 @@ nXMLAtt (XMLEle *ep) + /* search ep for an attribute with the given name and return its value. + * return "" if not found. + */ +-char * ++const char * + findXMLAttValu (XMLEle *ep, char *name) + { + XMLAtt *a = findXMLAtt (ep, name); +@@ -428,7 +429,7 @@ oneXMLchar (LilXML *lp, int c, char errm + growString (&lp->ce->tag, c); + lp->cs = INTAG; + } else if (!isspace(c)) { +- sprintf (errmsg, "Line %d: Bogus tag char %c", lp->ln, c); ++ snprintf (errmsg, ERRMSG_SIZE, "Line %d: Bogus tag char %c", lp->ln, c); + return (-1); + } + break; +@@ -454,7 +455,7 @@ oneXMLchar (LilXML *lp, int c, char errm + growString (&lp->ce->at[lp->ce->nat-1]->name, c); + lp->cs = INATTRN; + } else if (!isspace(c)) { +- sprintf (errmsg, "Line %d: Bogus leading attr name char: %c", ++ snprintf (errmsg, ERRMSG_SIZE, "Line %d: Bogus leading attr name char: %c", + lp->ln, c); + return (-1); + } +@@ -467,7 +468,7 @@ oneXMLchar (LilXML *lp, int c, char errm + popXMLEle(lp); + lp->cs = LOOK4CON; + } else { +- sprintf (errmsg, "Line %d: Bogus char %c before >", lp->ln, c); ++ snprintf (errmsg, ERRMSG_SIZE, "Line %d: Bogus char %c before >", lp->ln, c); + return (-1); + } + break; +@@ -478,7 +479,7 @@ oneXMLchar (LilXML *lp, int c, char errm + else if (isspace(c) || c == '=') + lp->cs = LOOK4ATTRV; + else { +- sprintf (errmsg, "Line %d: Bogus attr name char: %c", lp->ln,c); ++ snprintf (errmsg, ERRMSG_SIZE, "Line %d: Bogus attr name char: %c", lp->ln,c); + return (-1); + } + break; +@@ -489,7 +490,7 @@ oneXMLchar (LilXML *lp, int c, char errm + growString (&lp->ce->at[lp->ce->nat-1]->valu, '\0'); + lp->cs = INATTRV; + } else if (!(isspace(c) || c == '=')) { +- sprintf (errmsg, "Line %d: No value for attribute %s", lp->ln, ++ snprintf (errmsg, ERRMSG_SIZE, "Line %d: No value for attribute %.100s", lp->ln, + lp->ce->at[lp->ce->nat-1]->name); + return (-1); + } +@@ -547,7 +548,7 @@ oneXMLchar (LilXML *lp, int c, char errm + growString (&lp->endtag, c); + lp->cs = INCLOSETAG; + } else if (!isspace(c)) { +- sprintf (errmsg, "Line %d: Bogus preend tag char %c", lp->ln,c); ++ snprintf (errmsg, ERRMSG_SIZE, "Line %d: Bogus preend tag char %c", lp->ln,c); + return (-1); + } + break; +@@ -557,7 +558,7 @@ oneXMLchar (LilXML *lp, int c, char errm + growString (&lp->endtag, c); + else if (c == '>') { + if (strcmp (lp->ce->tag, lp->endtag)) { +- sprintf (errmsg,"Line %d: closing tag %s does not match %s", ++ snprintf (errmsg, ERRMSG_SIZE, "Line %d: closing tag %.64s does not match %.64s", + lp->ln, lp->endtag, lp->ce->tag); + return (-1); + } else if (lp->ce->pe) { +@@ -566,7 +567,7 @@ oneXMLchar (LilXML *lp, int c, char errm + } else + return (1); /* yes! */ + } else if (!isspace(c)) { +- sprintf (errmsg, "Line %d: Bogus end tag char %c", lp->ln, c); ++ snprintf (errmsg, ERRMSG_SIZE, "Line %d: Bogus end tag char %c", lp->ln, c); + return (-1); + } + break; +@@ -723,7 +724,7 @@ int + main (int ac, char *av[]) + { + LilXML *lp = newLilXML(); +- char errmsg[1024]; ++ char errmsg[ERRMSG_SIZE]; + XMLEle *root; + + root = readXMLFile (stdin, lp, errmsg); +@@ -742,4 +743,4 @@ main (int ac, char *av[]) + #endif + + /* For RCS Only -- Do Not Edit */ +-static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: lilxml.c,v $ $Date: 2004/06/07 05:59:20 $ $Revision: 1.6 $ $Name: $"}; ++static char *rcsid[2] = {(char *)rcsid, "@(#) $RCSfile: lilxml.c,v $ $Date: 2004/06/07 05:59:20 $ $Revision: 1.6 $ $Name: KDE_3_3_BRANCH $"}; +Index: indi/lilxml.h +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/lilxml.h,v +retrieving revision 1.6 +diff -u -3 -d -p -r1.6 lilxml.h +--- kstars/kstars/indi/lilxml.h 7 Jun 2004 05:59:20 -0000 1.6 ++++ kstars/kstars/indi/lilxml.h 6 Feb 2005 18:38:37 -0000 +@@ -189,7 +189,7 @@ extern int nXMLAtt (XMLEle *ep); + \param name the name of the XML attribute to retrieve its value. + \return the value string of an XML element on success. NULL on failure. + */ +-extern char *findXMLAttValu (XMLEle *ep, char *name); ++extern const char *findXMLAttValu (XMLEle *ep, char *name); + + /** \brief Handy wrapper to read one xml file. + \param fp pointer to FILE to read. +@@ -242,7 +242,7 @@ extern void prXMLEle (FILE *fp, XMLEle * + */ + + /* For RCS Only -- Do Not Edit +- * @(#) $RCSfile: lilxml.h,v $ $Date: 2004/06/07 05:59:20 $ $Revision: 1.6 $ $Name: $ ++ * @(#) $RCSfile: lilxml.h,v $ $Date: 2004/06/07 05:59:20 $ $Revision: 1.6 $ $Name: KDE_3_3_BRANCH $ + */ + + #endif /* LILXML_H */ +Index: indi/lx200_16.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/lx200_16.cpp,v +retrieving revision 1.11 +diff -u -3 -d -p -r1.11 lx200_16.cpp +--- kstars/kstars/indi/lx200_16.cpp 2 Jun 2004 23:42:35 -0000 1.11 ++++ kstars/kstars/indi/lx200_16.cpp 6 Feb 2005 18:38:38 -0000 +@@ -224,8 +224,7 @@ void LX200_16::ISNewSwitch (const char * + } + + FanStatusSw.s = IPS_OK; +- strcpy(msg, index == 0 ? "Fan is ON" : "Fan is OFF"); +- IDSetSwitch (&FanStatusSw, msg); ++ IDSetSwitch (&FanStatusSw, index == 0 ? "Fan is ON" : "Fan is OFF"); + return; + } + +@@ -240,7 +239,7 @@ void LX200_16::ISNewSwitch (const char * + + index == 0 ? seekHomeAndSave() : seekHomeAndSet(); + HomeSearchSw.s = IPS_BUSY; +- IDSetSwitch (&HomeSearchSw, msg); ++ IDSetSwitch (&HomeSearchSw, index == 0 ? "Seek Home and Save" : "Seek Home and Set"); + return; + } + +@@ -255,8 +254,7 @@ void LX200_16::ISNewSwitch (const char * + + index == 0 ? seekHomeAndSave() : seekHomeAndSet(); + FieldDeRotatorSw.s = IPS_OK; +- strcpy(msg, index == 0 ? "Field deRotator is ON" : "Field deRotator is OFF"); +- IDSetSwitch (&FieldDeRotatorSw, msg); ++ IDSetSwitch (&FieldDeRotatorSw, index == 0 ? "Field deRotator is ON" : "Field deRotator is OFF"); + return; + } + +Index: indi/lx200driver.c +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/lx200driver.c,v +retrieving revision 1.18 +diff -u -3 -d -p -r1.18 lx200driver.c +--- kstars/kstars/indi/lx200driver.c 27 May 2004 16:14:52 -0000 1.18 ++++ kstars/kstars/indi/lx200driver.c 6 Feb 2005 18:38:38 -0000 +@@ -584,7 +584,7 @@ int setCommandInt(int data, const char * + + char tempString[16]; + +- sprintf(tempString, "%s%d#", cmd, data); ++ snprintf(tempString, sizeof( tempString ), "%s%d#", cmd, data); + + if (portWrite(tempString) < 0) + return -1; +@@ -596,7 +596,7 @@ int setMinElevationLimit(int min) + { + char tempString[16]; + +- sprintf(tempString, "#:Sh%02d#", min); ++ snprintf(tempString, sizeof( tempString ), "#:Sh%02d#", min); + + return (setStandardProcedure(tempString)); + } +@@ -605,7 +605,7 @@ int setMaxElevationLimit(int max) + { + char tempString[16]; + +- sprintf(tempString, "#:So%02d*#", max); ++ snprintf(tempString, sizeof( tempString ), "#:So%02d*#", max); + + return (setStandardProcedure(tempString)); + +@@ -619,7 +619,7 @@ int setMaxSlewRate(int slewRate) + if (slewRate < 2 || slewRate > 8) + return -1; + +- sprintf(tempString, "#:Sw%d#", slewRate); ++ snprintf(tempString, sizeof( tempString ), "#:Sw%d#", slewRate); + + return (setStandardProcedure(tempString)); + +@@ -634,7 +634,7 @@ int setObjectRA(double ra) + + getSexComponents(ra, &h, &m, &s); + +- sprintf(tempString, "#:Sr %02d:%02d:%02d#", h, m, s); ++ snprintf(tempString, sizeof( tempString ), "#:Sr %02d:%02d:%02d#", h, m, s); + IDLog("Set Object RA String %s\n", tempString); + return (setStandardProcedure(tempString)); + } +@@ -649,9 +649,9 @@ int setObjectDEC(double dec) + + /* case with negative zero */ + if (!d && dec < 0) +- sprintf(tempString, "#:Sd -%02d:%02d:%02d#", d, m, s); ++ snprintf(tempString, sizeof( tempString ), "#:Sd -%02d:%02d:%02d#", d, m, s); + else +- sprintf(tempString, "#:Sd %+03d:%02d:%02d#", d, m, s); ++ snprintf(tempString, sizeof( tempString ), "#:Sd %+03d:%02d:%02d#", d, m, s); + + IDLog("Set Object DEC String %s\n", tempString); + +@@ -663,7 +663,7 @@ int setCommandXYZ(int x, int y, int z, c + { + char tempString[16]; + +- sprintf(tempString, "%s %02d:%02d:%02d#", cmd, x, y, z); ++ snprintf(tempString, sizeof( tempString ), "%s %02d:%02d:%02d#", cmd, x, y, z); + + return (setStandardProcedure(tempString)); + } +@@ -698,7 +698,7 @@ int setCalenderDate(int dd, int mm, int + char boolRet[2]; + yy = yy % 100; + +- sprintf(tempString, "#:SC %02d/%02d/%02d#", mm, dd, yy); ++ snprintf(tempString, sizeof( tempString ), "#:SC %02d/%02d/%02d#", mm, dd, yy); + + if (portWrite(tempString) < 0) + return -1; +@@ -725,7 +725,7 @@ int setUTCOffset(double hours) + char tempString[16]; + + /*TODO add fractions*/ +- sprintf(tempString, "#:SG %+03d#", (int) hours); ++ snprintf(tempString, sizeof( tempString ), "#:SG %+03d#", (int) hours); + + fprintf(stderr, "UTC string is %s\n", tempString); + +@@ -740,7 +740,7 @@ int setSiteLongitude(double Long) + + getSexComponents(Long, &d, &m, &s); + +- sprintf(tempString, "#:Sg%03d:%02d#", d, m); ++ snprintf(tempString, sizeof( tempString ), "#:Sg%03d:%02d#", d, m); + + return (setStandardProcedure(tempString)); + } +@@ -752,7 +752,7 @@ int setSiteLatitude(double Lat) + + getSexComponents(Lat, &d, &m, &s); + +- sprintf(tempString, "#:St%+03d:%02d:%02d#", d, m, s); ++ snprintf(tempString, sizeof( tempString ), "#:St%+03d:%02d:%02d#", d, m, s); + + return (setStandardProcedure(tempString)); + } +@@ -764,7 +764,7 @@ int setObjAz(double az) + + getSexComponents(az, &d, &m, &s); + +- sprintf(tempString, "#:Sz%03d:%02d#", d, m); ++ snprintf(tempString, sizeof( tempString ), "#:Sz%03d:%02d#", d, m); + + return (setStandardProcedure(tempString)); + +@@ -777,7 +777,7 @@ int setObjAlt(double alt) + + getSexComponents(alt, &d, &m, &s); + +- sprintf(tempString, "#:Sa%+02d*%02d#", d, m); ++ snprintf(tempString, sizeof( tempString ), "#:Sa%+02d*%02d#", d, m); + + return (setStandardProcedure(tempString)); + } +@@ -791,16 +791,16 @@ int setSiteName(char * siteName, int sit + switch (siteNum) + { + case 1: +- sprintf(tempString, "#:SM %s#", siteName); ++ snprintf(tempString, sizeof( tempString ), "#:SM %s#", siteName); + break; + case 2: +- sprintf(tempString, "#:SN %s#", siteName); ++ snprintf(tempString, sizeof( tempString ), "#:SN %s#", siteName); + break; + case 3: +- sprintf(tempString, "#:SO %s#", siteName); ++ snprintf(tempString, sizeof( tempString ), "#:SO %s#", siteName); + break; + case 4: +- sprintf(tempString, "#:SP %s#", siteName); ++ snprintf(tempString, sizeof( tempString ), "#:SP %s#", siteName); + break; + default: + return -1; +@@ -883,7 +883,7 @@ int setTrackFreq(double trackF) + { + char tempString[16]; + +- sprintf(tempString, "#:ST %04.1f#", trackF); ++ snprintf(tempString, sizeof( tempString ), "#:ST %04.1f#", trackF); + + return (setStandardProcedure(tempString)); + +@@ -1044,13 +1044,13 @@ int selectCatalogObject(int catalog, int + switch (catalog) + { + case LX200_STAR_C: +- sprintf(tempString, "#:LS%d#", NNNN); ++ snprintf(tempString, sizeof( tempString ), "#:LS%d#", NNNN); + break; + case LX200_DEEPSKY_C: +- sprintf(tempString, "#:LC%d#", NNNN); ++ snprintf(tempString, sizeof( tempString ), "#:LC%d#", NNNN); + break; + case LX200_MESSIER_C: +- sprintf(tempString, "#:LM%d#", NNNN); ++ snprintf(tempString, sizeof( tempString ), "#:LM%d#", NNNN); + break; + default: + return -1; +@@ -1068,10 +1068,10 @@ int selectSubCatalog(int catalog, int su + switch (catalog) + { + case LX200_STAR_C: +- sprintf(tempString, "#:LsD%d#", subCatalog); ++ snprintf(tempString, sizeof( tempString ), "#:LsD%d#", subCatalog); + break; + case LX200_DEEPSKY_C: +- sprintf(tempString, "#:LoD%d#", subCatalog); ++ snprintf(tempString, sizeof( tempString ), "#:LoD%d#", subCatalog); + break; + case LX200_MESSIER_C: + return 1; +Index: indi/lx200generic.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/lx200generic.cpp,v +retrieving revision 1.33.2.1 +diff -u -3 -d -p -r1.33.2.1 lx200generic.cpp +--- kstars/kstars/indi/lx200generic.cpp 11 Sep 2004 21:42:04 -0000 1.33.2.1 ++++ kstars/kstars/indi/lx200generic.cpp 6 Feb 2005 18:38:39 -0000 +@@ -620,13 +620,13 @@ void LX200Generic::ISNewNumber (const ch + setSiteLatitude(newLat); + geoNum.np[0].value = newLat; + geoNum.np[1].value = newLong; +- sprintf (msg, "Site location updated to Lat %s - Long %s", l, L); ++ snprintf (msg, sizeof(msg), "Site location updated to Lat %.32s - Long %.32s", l, L); + } else + { + geoNum.s = IPS_IDLE; +- sprintf (msg, "Lat or Long missing or invalid"); ++ strcpy(msg, "Lat or Long missing or invalid"); + } +- IDSetNumber (&geoNum, msg); ++ IDSetNumber (&geoNum, "%s", msg); + return; + } + +Index: indi/lx200gps.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/lx200gps.cpp,v +retrieving revision 1.10.2.1 +diff -u -3 -d -p -r1.10.2.1 lx200gps.cpp +--- kstars/kstars/indi/lx200gps.cpp 11 Sep 2004 21:42:04 -0000 1.10.2.1 ++++ kstars/kstars/indi/lx200gps.cpp 6 Feb 2005 18:38:39 -0000 +@@ -133,8 +133,7 @@ void LX200GPS::ISNewNumber (const char * + index = getOnSwitch(&GPSPowerSw); + index == 0 ? turnGPSOn() : turnGPSOff(); + GPSPowerSw.s = IPS_OK; +- strcpy(msg, index == 0 ? "GPS System is ON" : "GPS System is OFF"); +- IDSetSwitch (&GPSPowerSw, msg); ++ IDSetSwitch (&GPSPowerSw, index == 0 ? "GPS System is ON" : "GPS System is OFF" ); + return; + } + +@@ -164,7 +163,7 @@ void LX200GPS::ISNewNumber (const char * + } + + GPSStatusSw.s = IPS_OK; +- IDSetSwitch (&GPSStatusSw, msg); ++ IDSetSwitch (&GPSStatusSw, "%s", msg); + return; + + } +@@ -207,7 +206,7 @@ void LX200GPS::ISNewNumber (const char * + } + + AltDecPecSw.s = IPS_OK; +- IDSetSwitch(&AltDecPecSw, msg); ++ IDSetSwitch(&AltDecPecSw, "%s", msg); + + return; + } +@@ -233,7 +232,7 @@ void LX200GPS::ISNewNumber (const char * + } + + AzRaPecSw.s = IPS_OK; +- IDSetSwitch(&AzRaPecSw, msg); ++ IDSetSwitch(&AzRaPecSw, "%s", msg); + + return; + } +Index: indi/mount_simulation.c +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/mount_simulation.c,v +retrieving revision 1.1 +diff -u -3 -d -p -r1.1 mount_simulation.c +--- kstars/kstars/indi/mount_simulation.c 21 Jan 2004 18:21:01 -0000 1.1 ++++ kstars/kstars/indi/mount_simulation.c 6 Feb 2005 18:38:39 -0000 +@@ -140,10 +140,10 @@ char *names[], int n) + targetDEC = newdec; + fs_sexa (r, targetRA, 2, 3600); + fs_sexa (d, targetDEC, 3, 3600); +- sprintf (msg, "Moving to RA Dec %s %s", r, d); ++ snprintf (msg, sizeof(msg), "Moving to RA Dec %.32s %.32s", r, d); + } else { + eqNum.s = IPS_IDLE; +- sprintf (msg, "RA or Dec absent or bogus"); ++ snprintf (msg, sizeof(msg), "RA or Dec absent or bogus"); + } + sendeq (msg); + return; +Index: indi/v4ldriver.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/v4ldriver.cpp,v +retrieving revision 1.10.2.1 +diff -u -3 -d -p -r1.10.2.1 v4ldriver.cpp +--- kstars/kstars/indi/v4ldriver.cpp 31 Aug 2004 05:56:45 -0000 1.10.2.1 ++++ kstars/kstars/indi/v4ldriver.cpp 6 Feb 2005 18:38:40 -0000 +@@ -51,8 +51,8 @@ void waitForData(int rp, int wp); + void updateDataChannel(void *p); + void updateStream(void * p); + void getBasicData(void); +-void uploadFile(char * filename); +-int writeFITS(char *filename, char errmsg[]); ++void uploadFile(const char * filename); ++int writeFITS(const char *filename, char errmsg[]); + int grabImage(void); + int checkPowerN(INumberVectorProperty *np); + int checkPowerS(ISwitchVectorProperty *sp); +@@ -461,14 +461,14 @@ void ISNewNumber (const char *dev, const + int grabImage() + { + int err, fd; +- char errmsg[1024]; ++ char errmsg[ERRMSG_SIZE]; + char filename[] = "/tmp/fitsXXXXXX"; + + + if ((fd = mkstemp(filename)) < 0) + { +- IDMessage(mydev, "Error making temporary filename.", NULL); +- IDLog("Error making temporary filename.\n", NULL); ++ IDMessage(mydev, "Error making temporary filename."); ++ IDLog("Error making temporary filename.\n"); + return -1; + } + close(fd); +@@ -483,7 +483,7 @@ int grabImage() + return 0; + } + +-int writeFITS(char * filename, char errmsg[]) ++int writeFITS(const char * filename, char errmsg[]) + { + FITS_FILE* ofp; + int i, bpp, bpsl, width, height; +@@ -495,7 +495,7 @@ int writeFITS(char * filename, char errm + ofp = fits_open (filename, "w"); + if (!ofp) + { +- sprintf(errmsg, "Error: cannot open file for writing."); ++ snprintf(errmsg, ERRMSG_SIZE, "Error: cannot open file for writing."); + return (-1); + } + +@@ -508,12 +508,12 @@ int writeFITS(char * filename, char errm + hdu = create_fits_header (ofp, width, height, bpp); + if (hdu == NULL) + { +- sprintf(errmsg, "Error: creating FITS header failed."); ++ snprintf(errmsg, ERRMSG_SIZE, "Error: creating FITS header failed."); + return (-1); + } + if (fits_write_header (ofp, hdu) < 0) + { +- sprintf(errmsg, "Error: writing to FITS header failed."); ++ snprintf(errmsg, ERRMSG_SIZE, "Error: writing to FITS header failed."); + return (-1); + } + +@@ -532,7 +532,7 @@ int writeFITS(char * filename, char errm + + if (ferror (ofp->fp)) + { +- sprintf(errmsg, "Error: write error occured"); ++ snprintf(errmsg, ERRMSG_SIZE, "Error: write error occured"); + return (-1); + } + +@@ -730,7 +730,7 @@ FITS_HDU_LIST * create_fits_header (FITS + hdulist->used.bscale = 1; + hdulist->bscale = 1.0; + +- sprintf(expose_s, "EXPOSURE= %d / milliseconds", V4LFrame->expose); ++ snprintf(expose_s, sizeof(expose_s), "EXPOSURE= %d / milliseconds", V4LFrame->expose); + + fits_add_card (hdulist, expose_s); + fits_add_card (hdulist, instrumentName); +@@ -813,7 +813,7 @@ void updateStream(void *p) + + } + +-void uploadFile(char * filename) ++void uploadFile(const char * filename) + { + FILE * fitsFile; + char frameSize[FRAME_ILEN]; +Index: indi/v4lphilips.cpp +=================================================================== +RCS file: /home/kde/kdeedu/kstars/kstars/indi/v4lphilips.cpp,v +retrieving revision 1.9.2.1 +diff -u -3 -d -p -r1.9.2.1 v4lphilips.cpp +--- kstars/kstars/indi/v4lphilips.cpp 31 Aug 2004 05:56:45 -0000 1.9.2.1 ++++ kstars/kstars/indi/v4lphilips.cpp 6 Feb 2005 18:38:40 -0000 +@@ -52,8 +52,8 @@ void waitForData(int rp, int wp); + void updateDataChannel(void *p); + void updateStream(void * p); + void getBasicData(void); +-void uploadFile(char * filename); +-int writeFITS(char *filename, char errmsg[]); ++void uploadFile(const char* filename); ++int writeFITS(const char* filename, char errmsg[]); + int grabImage(void); + int checkPowerN(INumberVectorProperty *np); + int checkPowerS(ISwitchVectorProperty *sp); +@@ -286,7 +286,7 @@ void ISGetProperties (const char *dev) + + void ISNewSwitch (const char *dev, const char *name, ISState *states, char *names[], int n) + { +- char errmsg[1024]; ++ char errmsg[ERRMSG_SIZE]; + int index=0; + + /* ignore if not ours */ +@@ -364,7 +364,7 @@ void ISNewSwitch (const char *dev, const + { + AntiFlickerS[0].s = ISS_OFF; + AntiFlickerS[1].s = ISS_ON; +- IDSetSwitch(&AntiFlickerSP, errmsg); ++ IDSetSwitch(&AntiFlickerSP, "%s", errmsg); + return; + } + +@@ -377,7 +377,7 @@ void ISNewSwitch (const char *dev, const + { + AntiFlickerS[0].s = ISS_ON; + AntiFlickerS[1].s = ISS_OFF; +- IDSetSwitch(&AntiFlickerSP, errmsg); ++ IDSetSwitch(&AntiFlickerSP, "%s", errmsg); + return; + } + +@@ -403,7 +403,7 @@ void ISNewSwitch (const char *dev, const + { + BackLightS[0].s = ISS_OFF; + BackLightS[1].s = ISS_ON; +- IDSetSwitch(&BackLightSP, errmsg); ++ IDSetSwitch(&BackLightSP, "%s", errmsg); + return; + } + +@@ -416,7 +416,7 @@ void ISNewSwitch (const char *dev, const + { + BackLightS[0].s = ISS_ON; + BackLightS[1].s = ISS_OFF; +- IDSetSwitch(&BackLightSP, errmsg); ++ IDSetSwitch(&BackLightSP, "%s", errmsg); + return; + } + +@@ -447,7 +447,7 @@ void ISNewSwitch (const char *dev, const + { + IUResetSwitches(&NoiseReductionSP); + NoiseReductionS[0].s = ISS_ON; +- IDSetSwitch(&NoiseReductionSP, errmsg); ++ IDSetSwitch(&NoiseReductionSP, "%s", errmsg); + return; + } + +@@ -482,7 +482,7 @@ void ISNewSwitch (const char *dev, const + { + IUResetSwitches(&WhiteBalanceModeSP), + WhiteBalanceModeS[0].s = ISS_ON; +- IDSetSwitch(&WhiteBalanceModeSP, errmsg); ++ IDSetSwitch(&WhiteBalanceModeSP, "%s", errmsg); + return; + } + break; +@@ -493,7 +493,7 @@ void ISNewSwitch (const char *dev, const + { + IUResetSwitches(&WhiteBalanceModeSP), + WhiteBalanceModeS[0].s = ISS_ON; +- IDSetSwitch(&WhiteBalanceModeSP, errmsg); ++ IDSetSwitch(&WhiteBalanceModeSP, "%s", errmsg); + return; + } + break; +@@ -504,7 +504,7 @@ void ISNewSwitch (const char *dev, const + { + IUResetSwitches(&WhiteBalanceModeSP), + WhiteBalanceModeS[0].s = ISS_ON; +- IDSetSwitch(&WhiteBalanceModeSP, errmsg); ++ IDSetSwitch(&WhiteBalanceModeSP, "%s", errmsg); + return; + } + break; +@@ -515,7 +515,7 @@ void ISNewSwitch (const char *dev, const + { + IUResetSwitches(&WhiteBalanceModeSP), + WhiteBalanceModeS[0].s = ISS_ON; +- IDSetSwitch(&WhiteBalanceModeSP, errmsg); ++ IDSetSwitch(&WhiteBalanceModeSP, "%s", errmsg); + return; + } + break; +@@ -526,7 +526,7 @@ void ISNewSwitch (const char *dev, const + { + IUResetSwitches(&WhiteBalanceModeSP), + WhiteBalanceModeS[0].s = ISS_ON; +- IDSetSwitch(&WhiteBalanceModeSP, errmsg); ++ IDSetSwitch(&WhiteBalanceModeSP, "%s", errmsg); + return; + } + break; +@@ -555,7 +555,7 @@ void ISNewSwitch (const char *dev, const + if (saveSettings(errmsg) < 0) + { + IUResetSwitches(&CamSettingSP); +- IDSetSwitch(&CamSettingSP, errmsg); ++ IDSetSwitch(&CamSettingSP, "%s", errmsg); + return; + } + +@@ -616,8 +616,7 @@ void ISNewText (const char *dev, const c + + void ISNewNumber (const char *dev, const char *name, double values[], char *names[], int n) + { +- +- char errmsg[1024]; ++ char errmsg[ERRMSG_SIZE]; + + /* ignore if not ours */ + if (dev && strcmp (dev, mydev)) +@@ -672,7 +671,7 @@ void ISNewNumber (const char *dev, const + if (setFrameRate( (int) FrameRateN[0].value, errmsg) < 0) + { + FrameRateN[0].value = oldFP; +- IDSetNumber(&FrameRateNP, errmsg); ++ IDSetNumber(&FrameRateNP, "%s", errmsg); + return; + } + +@@ -727,7 +726,7 @@ void ISNewNumber (const char *dev, const + for (int i=0; i < 6; i++) + ImageAdjustN[i].value = oldImgPar[i]; + +- IDSetNumber(&ImageAdjustNP, errmsg); ++ IDSetNumber(&ImageAdjustNP, "%s", errmsg); + return; + } + else +@@ -745,7 +744,7 @@ void ISNewNumber (const char *dev, const + for (int i=0; i < 6; i++) + ImageAdjustN[i].value = oldImgPar[i]; + +- IDSetNumber(&ImageAdjustNP, errmsg); ++ IDSetNumber(&ImageAdjustNP, "%s", errmsg); + return; + } + else +@@ -775,7 +774,7 @@ void ISNewNumber (const char *dev, const + + if (setExposure( (int) values[0], errmsg) < 0) + { +- IDSetNumber(&ShutterSpeedNP, errmsg); ++ IDSetNumber(&ShutterSpeedNP, "%s", errmsg); + return; + } + +@@ -803,14 +802,14 @@ void ISNewNumber (const char *dev, const + { + WhiteBalanceN[0].value = oldBalance[0]; + WhiteBalanceN[1].value = oldBalance[1]; +- IDSetNumber(&WhiteBalanceNP, errmsg); ++ IDSetNumber(&WhiteBalanceNP, "%s", errmsg); + return; + } + if (setWhiteBalanceBlue( (int) WhiteBalanceN[1].value * 256, errmsg)) + { + WhiteBalanceN[0].value = oldBalance[0]; + WhiteBalanceN[1].value = oldBalance[1]; +- IDSetNumber(&WhiteBalanceNP, errmsg); ++ IDSetNumber(&WhiteBalanceNP, "%s", errmsg); + return; + } + +@@ -865,8 +864,8 @@ int grabImage() + + if ((fd = mkstemp(filename)) < 0) + { +- IDMessage(mydev, "Error making temporary filename.", NULL); +- IDLog("Error making temporary filename.\n", NULL); ++ IDMessage(mydev, "Error making temporary filename."); ++ IDLog("Error making temporary filename.\n"); + return -1; + } + close(fd); +@@ -881,19 +880,17 @@ int grabImage() + return 0; + } + +-int writeFITS(char * filename, char errmsg[]) ++int writeFITS(const char* filename, char errmsg[]) + { + FITS_FILE* ofp; + int i, bpp, bpsl, width, height; + long nbytes; + FITS_HDU_LIST *hdu; + +- IDLog("in writeFITS with filename %s\n", filename); +- + ofp = fits_open (filename, "w"); + if (!ofp) + { +- sprintf(errmsg, "Error: cannot open file for writing."); ++ strcpy(errmsg, "Error: cannot open file for writing."); + return (-1); + } + +@@ -906,12 +903,12 @@ int writeFITS(char * filename, char errm + hdu = create_fits_header (ofp, width, height, bpp); + if (hdu == NULL) + { +- sprintf(errmsg, "Error: creating FITS header failed."); ++ strcpy(errmsg, "Error: creating FITS header failed."); + return (-1); + } + if (fits_write_header (ofp, hdu) < 0) + { +- sprintf(errmsg, "Error: writing to FITS header failed."); ++ strcpy(errmsg, "Error: writing to FITS header failed."); + return (-1); + } + +@@ -930,7 +927,7 @@ int writeFITS(char * filename, char errm + + if (ferror (ofp->fp)) + { +- sprintf(errmsg, "Error: write error occured"); ++ strcpy(errmsg, "Error: write error occured"); + return (-1); + } + +@@ -997,7 +994,7 @@ void getBasicData() + if (setFrameRate( (int) FrameRateN[0].value, errmsg) < 0) + { + FrameRateNP.s = IPS_ALERT; +- IDSetNumber(&FrameRateNP, errmsg); ++ IDSetNumber(&FrameRateNP, "%s", errmsg); + } + else + { +@@ -1295,7 +1292,7 @@ void updateStream(void *p) + // IDLog("Leaving update stream\n"); + } + +-void uploadFile(char * filename) ++void uploadFile(const char* filename) + { + FILE * fitsFile; + char frameSize[FRAME_ILEN]; diff --git a/misc/kdeedu3/files/patch-kstars_kstars_indi_Makefile.in b/misc/kdeedu3/files/patch-kstars_kstars_indi_Makefile.in new file mode 100644 index 000000000000..f6947ade383b --- /dev/null +++ b/misc/kdeedu3/files/patch-kstars_kstars_indi_Makefile.in @@ -0,0 +1,10 @@ +--- kstars/kstars/indi/Makefile.in.orig Tue Feb 8 01:38:36 2005 ++++ kstars/kstars/indi/Makefile.in Tue Feb 8 01:38:55 2005 +@@ -962,7 +962,6 @@ + $(LN_S) lx200generic $(DESTDIR)$(bindir)/lx200_16 + rm -f $(DESTDIR)$(bindir)/lx200gps + $(LN_S) lx200generic $(DESTDIR)$(bindir)/lx200gps +- chmod +s $(DESTDIR)$(bindir)/fliccd + + uninstall-local: + rm $(DESTDIR)$(bindir)/lx200autostar $(DESTDIR)$(bindir)/lx200_16 $(DESTDIR)$(bindir)/lx200gps |