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 }
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; }
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; } }
/* 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 }
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); } }
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); }
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"); }