jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, long total_bytes_needed) { short tmpRef, vRefNum; long dirID; FInfo finderInfo; FSSpec theSpec; Str255 fName; OSErr osErr; long gestaltResponse = 0; /* Check that FSSpec calls are available. */ osErr = Gestalt( gestaltFSAttr, &gestaltResponse ); if ( ( osErr != noErr ) || !( gestaltResponse & (1<<gestaltHasFSSpecCalls) ) ) ERREXITS(cinfo, JERR_TFILE_CREATE, "- System 7.0 or later required"); /* TO DO: add a proper error message to jerror.h. */ /* Check that FindFolder is available. */ osErr = Gestalt( gestaltFindFolderAttr, &gestaltResponse ); if ( ( osErr != noErr ) || !( gestaltResponse & (1<<gestaltFindFolderPresent) ) ) ERREXITS(cinfo, JERR_TFILE_CREATE, "- System 7.0 or later required."); /* TO DO: add a proper error message to jerror.h. */ osErr = FindFolder ( kOnSystemDisk, kTemporaryFolderType, kCreateFolder, &vRefNum, &dirID ); if ( osErr != noErr ) ERREXITS(cinfo, JERR_TFILE_CREATE, "- temporary items folder unavailable"); /* TO DO: Try putting the temp files somewhere else. */ /* Keep generating file names till we find one that's not in use */ for (;;) { next_file_num++; /* advance counter */ sprintf(info->temp_name, TEMP_FILE_NAME, next_file_num); strcpy ( (Ptr)fName+1, info->temp_name ); *fName = strlen (info->temp_name); osErr = FSMakeFSSpec ( vRefNum, dirID, fName, &theSpec ); if ( (osErr = FSpGetFInfo ( &theSpec, &finderInfo ) ) != noErr ) break; } osErr = FSpCreate ( &theSpec, '????', '????', smSystemScript ); if ( osErr != noErr ) ERREXITS(cinfo, JERR_TFILE_CREATE, info->temp_name); osErr = FSpOpenDF ( &theSpec, fsRdWrPerm, &(info->temp_file) ); if ( osErr != noErr ) ERREXITS(cinfo, JERR_TFILE_CREATE, info->temp_name); info->tempSpec = theSpec; info->read_backing_store = read_backing_store; info->write_backing_store = write_backing_store; info->close_backing_store = close_backing_store; TRACEMSS(cinfo, 1, JTRC_TFILE_OPEN, info->temp_name); }
jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, long total_bytes_needed) { if ((info->temp_file = tmpfile()) == NULL) ERREXITS(cinfo, JERR_TFILE_CREATE, ""); info->read_backing_store = read_backing_store; info->write_backing_store = write_backing_store; info->close_backing_store = close_backing_store; }
jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, long total_bytes_needed) { if (get_ashmem(info, total_bytes_needed) == -1) ERREXITS(cinfo, JERR_TFILE_CREATE, ""); info->read_backing_store = read_backing_store; info->write_backing_store = write_backing_store; info->close_backing_store = close_backing_store; }
jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, long total_bytes_needed) { if ((info->temp_file = getTempFile((const char *)cinfo->client_data)) == NULL) ERREXITS(cinfo, JERR_TFILE_CREATE, ""); info->read_backing_store = read_backing_store; info->write_backing_store = write_backing_store; info->close_backing_store = close_backing_store; }
GLOBAL void jpeg_open_backing_store(j_common_ptr cinfo, backing_store_ptr info, long total_bytes_needed) { select_file_name(info->temp_name); if((info->temp_file = fopen(info->temp_name, RW_BINARY)) == NULL) ERREXITS(cinfo, JERR_TFILE_CREATE, info->temp_name); info->read_backing_store = read_backing_store; info->write_backing_store = write_backing_store; info->close_backing_store = close_backing_store; TRACEMSS(cinfo, 1, JTRC_TFILE_OPEN, info->temp_name); }
jpeg_open_backing_store (j_common_ptr cinfo, backing_store_ptr info, long total_bytes_needed) { if ((info->temp_file = tmpfile()) == NULL) #ifdef _WIN32 // Jonas Byström: added this as a fallback for non-admin users on Win32. if ((info->temp_file = jb_tmpfile(info)) == NULL) #endif // _WIN32 ERREXITS(cinfo, JERR_TFILE_CREATE, ""); info->read_backing_store = read_backing_store; info->write_backing_store = write_backing_store; info->close_backing_store = close_backing_store; }
static void term_destination (j_compress_ptr cinfo) { my_dst_mgr *dest = (my_dst_mgr*)cinfo->dest; size_t len = my_dst_mgr::buf_len - dest->pub.free_in_buffer; if (len > 0) { dest->ds->data = (unsigned char*)cs_realloc (dest->ds->data, dest->ds->len + sizeof(JOCTET) * len); if (!dest->ds->data) ERREXITS(cinfo,JERR_OUT_OF_MEMORY, "Could not reallocate enough memory"); memcpy(dest->ds->data + dest->ds->len, dest->buffer, sizeof(JOCTET) * len); dest->ds->len += sizeof(JOCTET) * len; } }
static jpeg_boolean empty_output_buffer (j_compress_ptr cinfo) { my_dst_mgr *dest = (my_dst_mgr*)cinfo->dest; dest->ds->data = (unsigned char*)cs_realloc (dest->ds->data, dest->ds->len + sizeof(JOCTET) * my_dst_mgr::buf_len); if (!dest->ds->data) ERREXITS(cinfo,JERR_OUT_OF_MEMORY, "Could not reallocate enough memory"); memcpy (dest->ds->data + dest->ds->len, dest->buffer, sizeof(JOCTET) * my_dst_mgr::buf_len); dest->pub.next_output_byte = dest->buffer; dest->pub.free_in_buffer = my_dst_mgr::buf_len; dest->ds->len += sizeof(JOCTET) * my_dst_mgr::buf_len; return true; }
GLOBAL void jpeg_open_backing_store(j_common_ptr cinfo, backing_store_ptr info, long total_bytes_needed) { /* Try extended memory, then expanded memory, then regular file. */ #if XMS_SUPPORTED if(open_xms_store(cinfo, info, total_bytes_needed)) return; #endif #if EMS_SUPPORTED if(open_ems_store(cinfo, info, total_bytes_needed)) return; #endif if(open_file_store(cinfo, info, total_bytes_needed)) return; ERREXITS(cinfo, JERR_TFILE_CREATE, ""); }
open_file_store (j_common_ptr cinfo, backing_store_ptr info, long total_bytes_needed) { short handle; select_file_name(info->temp_name); if (jdos_open((short far *) & handle, (char far *) info->temp_name)) { /* might as well exit since jpeg_open_backing_store will fail anyway */ ERREXITS(cinfo, JERR_TFILE_CREATE, info->temp_name); return FALSE; } info->handle.file_handle = handle; info->read_backing_store = read_file_store; info->write_backing_store = write_file_store; info->close_backing_store = close_file_store; TRACEMSS(cinfo, 1, JTRC_TFILE_OPEN, info->temp_name); return TRUE; /* succeeded */ }