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 --- devicemanager.cpp 28 Jun 2004 04:46:45 -0000 1.14 +++ 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 --- indidevice.cpp 11 Jun 2004 10:19:14 -0000 1.32 +++ 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 --- indidriver.cpp 28 Jun 2004 04:46:46 -0000 1.27 +++ 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 --- indielement.cpp 2 Jun 2004 20:47:26 -0000 1.4 +++ 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 --- indiproperty.cpp 28 Jun 2004 04:46:46 -0000 1.9 +++ 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 --- indi/Makefile.am 28 Jun 2004 04:46:46 -0000 1.24 +++ 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 --- indi/fitsrw.c 27 May 2004 16:14:52 -0000 1.5 +++ 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 --- indi/fli_ccd.c 31 Aug 2004 05:56:45 -0000 1.12.2.1 +++ 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 --- indi/indicom.h 7 Jun 2004 05:59:20 -0000 1.8 +++ 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 --- indi/indidevapi.h 7 Jun 2004 05:59:20 -0000 1.5 +++ 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 --- indi/indidrivermain.c 27 May 2004 16:14:52 -0000 1.8 +++ 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 --- indi/indiserver.c 7 Jun 2004 05:59:20 -0000 1.6 +++ 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 --- indi/lilxml.c 7 Jun 2004 05:59:20 -0000 1.6 +++ indi/lilxml.c 6 Feb 2005 18:38:37 -0000 @@ -32,6 +32,7 @@ #include #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 --- indi/lilxml.h 7 Jun 2004 05:59:20 -0000 1.6 +++ 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 --- indi/lx200_16.cpp 2 Jun 2004 23:42:35 -0000 1.11 +++ 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 --- indi/lx200driver.c 27 May 2004 16:14:52 -0000 1.18 +++ 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 --- indi/lx200generic.cpp 11 Sep 2004 21:42:04 -0000 1.33.2.1 +++ 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 --- indi/lx200gps.cpp 11 Sep 2004 21:42:04 -0000 1.10.2.1 +++ 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 --- indi/mount_simulation.c 21 Jan 2004 18:21:01 -0000 1.1 +++ 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 --- indi/v4ldriver.cpp 31 Aug 2004 05:56:45 -0000 1.10.2.1 +++ 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 --- indi/v4lphilips.cpp 31 Aug 2004 05:56:45 -0000 1.9.2.1 +++ 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];