Example #1
0
void msIO_setHeader (const char *header, const char* value, ...)
{
  va_list args;
  va_start( args, value );
#ifdef MOD_WMS_ENABLED
  msIOContext *ioctx = msIO_getHandler (stdout);
  if(ioctx && !strcmp(ioctx->label,"apache")) {

    request_rec *r = (request_rec*) (ioctx->cbData);
    char *fullvalue = apr_pvsprintf(r->pool, value,args);
    if (strcasecmp (header, "Content-Type") == 0) {
      r->content_type = fullvalue;
    } else if (strcasecmp (header, "Status") == 0) {
      r->status = atoi (fullvalue);
    } else {
      apr_table_setn (r->headers_out,
                      apr_pstrdup (r->pool, header),
                      fullvalue
                     );
    }
  } else {
#endif // MOD_WMS_ENABLED
    msIO_fprintf(stdout,"%s: ",header);
    msIO_vfprintf(stdout,value,args);
    msIO_fprintf(stdout,"\r\n");
#ifdef MOD_WMS_ENABLED
  }
#endif
}
Example #2
0
void msCleanupOnSignal( int nInData )
{
  /* For some reason, the fastcgi message code does not seem to work */
  /* from within the signal handler on Unix.  So we force output through */
  /* normal stdio functions. */
  msIO_installHandlers( NULL, NULL, NULL );
  msIO_fprintf( stderr, "In msCleanupOnSignal.\n" );
  exitSignal = 1;
}
Example #3
0
void msWriteError(FILE *stream)
{
    errorObj *ms_error = msGetErrorObj();

    while (ms_error && ms_error->code != MS_NOERR)
    {
        msIO_fprintf(stream, "%s: %s %s <br>\n", ms_error->routine, ms_errorCodes[ms_error->code], ms_error->message);
        ms_error->isreported = MS_TRUE;
        ms_error = ms_error->next;
    }
}
Example #4
0
/* msDebug()
**
** Outputs/logs messages to the MS_ERRORFILE if one is set 
** (see msSetErrorFile())
**
*/
void msDebug( const char * pszFormat, ... )
{
    va_list args;
    debugInfoObj *debuginfo = msGetDebugInfoObj();

    if (debuginfo == NULL || debuginfo->debug_mode == MS_DEBUGMODE_OFF)
        return;  /* Don't waste time here! */

    if (debuginfo->fp)
    {
        /* Writing to a stdio file handle */

#if defined(USE_FASTCGI)
        /* It seems the FastCGI stuff inserts a timestamp anyways, so  */
        /* we might as well skip this one if writing to stderr w/ FastCGI. */
        if (debuginfo->debug_mode != MS_DEBUGMODE_STDERR)
#endif
        {
            struct mstimeval tv;
            time_t t;
            msGettimeofday(&tv, NULL);
            t = tv.tv_sec;
            msIO_fprintf(debuginfo->fp, "[%s].%ld ", 
                         msStringChop(ctime(&t)), (long)tv.tv_usec);
        }

        va_start(args, pszFormat);
        msIO_vfprintf(debuginfo->fp, pszFormat, args);
        va_end(args);
    }
#ifdef _WIN32
    else if (debuginfo->debug_mode == MS_DEBUGMODE_WINDOWSDEBUG)
    {
        /* Writing to Windows Debug Console */

        char szMessage[MESSAGELENGTH];

        va_start(args, pszFormat);
        vsnprintf( szMessage, MESSAGELENGTH, pszFormat, args );
        va_end(args);

        szMessage[MESSAGELENGTH-1] = '\0';
        OutputDebugStringA(szMessage);
    }
#endif

}
Example #5
0
void msWriteErrorXML(FILE *stream)
{
    char *message;
    errorObj *ms_error = msGetErrorObj();

    while (ms_error && ms_error->code != MS_NOERR)
    {
        message = msEncodeHTMLEntities(ms_error->message);

        msIO_fprintf(stream, "%s: %s %s\n", ms_error->routine,
                     ms_errorCodes[ms_error->code], message);
        ms_error->isreported = MS_TRUE;
        ms_error = ms_error->next;

        msFree(message);
    }
}
Example #6
0
int msSaveImageIM(imageObj* img, char *filename, outputFormatObj *format )

{
  FILE *stream;
  char workbuffer[5000];
  int nSize=0, size=0, iIndice=0;

  DEBUG_IF printf("msSaveImageIM\n<BR>");

  if(filename != NULL && strlen(filename) > 0) {
    stream = fopen(filename, "wb");
    if(!stream) {
      msSetError(MS_IOERR, "(%s)", "msSaveImage()", filename);
      return(MS_FAILURE);
    }
  } else { /* use stdout */

#ifdef _WIN32
    /*
     * Change stdout mode to binary on win32 platforms
     */
    if(_setmode( _fileno(stdout), _O_BINARY) == -1) {
      msSetError(MS_IOERR, "Unable to change stdout to binary mode.", "msSaveImage()");
      return(MS_FAILURE);
    }
#endif
    stream = stdout;
  }

  if( strcasecmp(format->driver,"imagemap") == 0 ) {
    DEBUG_IF printf("ALLOCD %d<BR>\n", img->size);
    /* DEBUG_IF printf("F %s<BR>\n", img->img.imagemap); */
    DEBUG_IF printf("FLEN %d<BR>\n", (int)strlen(img->img.imagemap));
    if (dxf == 2) {
      msIO_fprintf(stream, "%s", layerlist);
    } else if (dxf) {
      msIO_fprintf(stream, "  0\nSECTION\n  2\nHEADER\n  9\n$ACADVER\n  1\nAC1009\n0\nENDSEC\n  0\nSECTION\n  2\nTABLES\n  0\nTABLE\n%s0\nENDTAB\n0\nENDSEC\n  0\nSECTION\n  2\nBLOCKS\n0\nENDSEC\n  0\nSECTION\n  2\nENTITIES\n", layerlist);
    } else {
      msIO_fprintf(stream, "<map name=\"%s\" width=\"%d\" height=\"%d\">\n", mapName, img->width, img->height);
    }
    nSize = sizeof(workbuffer);

    size = strlen(img->img.imagemap);
    if (size > nSize) {
      iIndice = 0;
      while ((iIndice + nSize) <= size) {
        snprintf(workbuffer, sizeof(workbuffer), "%s", img->img.imagemap+iIndice );
        workbuffer[nSize-1] = '\0';
        msIO_fwrite(workbuffer, strlen(workbuffer), 1, stream);
        iIndice +=nSize-1;
      }
      if (iIndice < size) {
        sprintf(workbuffer, "%s", img->img.imagemap+iIndice );
        msIO_fprintf(stream, "%s", workbuffer);
      }
    } else
      msIO_fwrite(img->img.imagemap, size, 1, stream);
    if( strcasecmp("OFF",msGetOutputFormatOption( format, "SKIPENDTAG", "OFF" )) == 0) {
      if (dxf == 2)
        msIO_fprintf(stream, "END");
      else if (dxf)
        msIO_fprintf(stream, "0\nENDSEC\n0\nEOF\n");
      else
        msIO_fprintf(stream, "</map>");
    }
  } else {
    msSetError(MS_MISCERR, "Unknown output image type driver: %s.",
               "msSaveImage()", format->driver );
    return(MS_FAILURE);
  }

  if(filename != NULL && strlen(filename) > 0) fclose(stream);
  return(MS_SUCCESS);
}
Example #7
0
void writeSymbol(symbolObj *s, FILE *stream)
{
  int i;

  msIO_fprintf(stream, "  SYMBOL\n");
  if(s->name != NULL) msIO_fprintf(stream, "    NAME \"%s\"\n", s->name);

  switch (s->type) {
    case(MS_SYMBOL_HATCH):
      msIO_fprintf(stream, "    TYPE HATCH\n");
      break;
    case(MS_SYMBOL_PIXMAP):
      msIO_fprintf(stream, "    TYPE PIXMAP\n");
      if(s->imagepath != NULL) msIO_fprintf(stream, "    IMAGE \"%s\"\n", s->imagepath);
      msIO_fprintf(stream, "    TRANSPARENT %d\n", s->transparentcolor);
      break;
    case(MS_SYMBOL_TRUETYPE):
      msIO_fprintf(stream, "    TYPE TRUETYPE\n");
      if(s->antialias == MS_TRUE) msIO_fprintf(stream, "    ANTIALIAS TRUE\n");
      if (s->character != NULL) msIO_fprintf(stream, "    CHARACTER \"%s\"\n", s->character);
      if (s->font != NULL) msIO_fprintf(stream, "    FONT \"%s\"\n", s->font);
      break;
    default:
      if(s->type == MS_SYMBOL_ELLIPSE)
        msIO_fprintf(stream, "    TYPE ELLIPSE\n");
      else if(s->type == MS_SYMBOL_VECTOR)
        msIO_fprintf(stream, "    TYPE VECTOR\n");
      else if(s->type == MS_SYMBOL_SVG)
        msIO_fprintf(stream, "    TYPE SVG\n");
      else
        msIO_fprintf(stream, "    TYPE SIMPLE\n");

      if(s->filled == MS_TRUE) msIO_fprintf(stream, "    FILLED TRUE\n");
      if(s->imagepath != NULL) msIO_fprintf(stream, "    IMAGE \"%s\"\n", s->imagepath);

      /* POINTS */
      if(s->numpoints != 0) {
        msIO_fprintf(stream, "    POINTS\n");
        for(i=0; i<s->numpoints; i++) {
          msIO_fprintf(stream, "      %g %g\n", s->points[i].x, s->points[i].y);
        }
        msIO_fprintf(stream, "    END\n");
      }
      break;
  }

  msIO_fprintf(stream, "  END\n\n");
}