/* * Open a TIFF file for read/writing. */ TIFF* TIFFOpen(const char* name, const char* mode) { static const char module[] = "TIFFOpen"; Str255 pname; FInfo finfo; short fref; OSErr err; strcpy((char*) pname, name); CtoPstr((char*) pname); switch (_TIFFgetMode(mode, module)) { default: return ((TIFF*) 0); case O_RDWR | O_CREAT | O_TRUNC: if (GetFInfo(pname, 0, &finfo) == noErr) FSDelete(pname, 0); /* fall through */ case O_RDWR | O_CREAT: if ((err = GetFInfo(pname, 0, &finfo)) == fnfErr) { if (Create(pname, 0, ' ', 'TIFF') != noErr) goto badCreate; if (FSOpen(pname, 0, &fref) != noErr) goto badOpen; } else if (err == noErr) { if (FSOpen(pname, 0, &fref) != noErr) goto badOpen; } else goto badOpen; break; case O_RDONLY: case O_RDWR: if (FSOpen(pname, 0, &fref) != noErr) goto badOpen; break; } return (TIFFFdOpen((int) fref, name, mode)); badCreate: TIFFError(module, "%s: Cannot create", name); return ((TIFF*) 0); badOpen: TIFFError(module, "%s: Cannot open", name); return ((TIFF*) 0); }
void macSetInfo(Integer vRefNum,char * fName,OSType type,OSType creator) { FInfo finder_stuff; Str63 fileName; strncpy((char *) fileName, fName, 63); fileName[63] = '\0'; CtoPstr((char *) fileName); GetFInfo(fileName, vRefNum, &finder_stuff); finder_stuff.fdType = type; finder_stuff.fdCreator = creator; SetFInfo(fileName, vRefNum, &finder_stuff); } /*macSetInfo()*/
int Mac_f2c_access( char *fileName, int notUsed ) { //NOTE: this is not carbonized OSErr err; short vRefNum; FInfo info; Str255 pFileName; CopyCtoPstr( pFileName, fileName ); /* Make name a Pascal string */ err = GetFInfo( pFileName, 0, &info ); /* Check on the default volume */ if ( err ) return 1; else return 0; }
static PyObject * MacOS_GetCreatorAndType(PyObject *self, PyObject *args) { Str255 name; FInfo info; PyObject *creator, *type, *res; OSErr err; if (!PyArg_ParseTuple(args, "O&", PyMac_GetStr255, &name)) return NULL; if ((err = GetFInfo(name, 0, &info)) != noErr) return PyErr_Mac(MacOS_Error, err); creator = PyString_FromStringAndSize((char *)&info.fdCreator, 4); type = PyString_FromStringAndSize((char *)&info.fdType, 4); res = Py_BuildValue("OO", creator, type); Py_DECREF(creator); Py_DECREF(type); return res; }
static PyObject * MacOS_SetCreatorAndType(PyObject *self, PyObject *args) { Str255 name; ResType creator, type; FInfo info; OSErr err; if (!PyArg_ParseTuple(args, "O&O&O&", PyMac_GetStr255, &name, PyMac_GetOSType, &creator, PyMac_GetOSType, &type)) return NULL; if ((err = GetFInfo(name, 0, &info)) != noErr) return PyErr_Mac(MacOS_Error, err); info.fdCreator = creator; info.fdType = type; if ((err = SetFInfo(name, 0, &info)) != noErr) return PyErr_Mac(MacOS_Error, err); Py_INCREF(Py_None); return Py_None; }
/* * Like rename() but will try to copy the file if the rename fails. * This is because under OS's with multiple physical volumes if the * source and destination are on different volumes the rename will fail */ int rename2(char *srcFile, char *destFile) { FILE *f, *g; #ifdef MACTC5 int copy=-1; #endif int status = 0; long fileLength; #ifdef MACTC5 copy=MoveRename(srcFile,destFile); if (copy) #else #if defined(VMS) || defined(C370) if (rename(srcFile, destFile) != 0) #else if (rename(srcFile, destFile) == -1) #endif #endif { /* Rename failed, try a copy */ if (((f = fopen(srcFile, FOPRBIN)) == NULL) || ((g = fopen(destFile, FOPWBIN)) == NULL)) /* Can't open files */ return -1; #ifdef MACTC5 { FInfo finderInfo; c2pstr(srcFile); c2pstr(destFile); if(GetFInfo((uchar *)srcFile,0,&finderInfo)==0) SetFInfo((uchar *)destFile,0,&finderInfo); p2cstr((uchar *)srcFile); p2cstr((uchar *)destFile); } #endif /* Get file length and copy it */ fseek(f, 0L, SEEK_END); fileLength = ftell(f); rewind(f); status = copyfile(f, g, fileLength); if (write_error(g)) status = -1; /* Zap source file if the copy went OK, otherwise zap the (possibly incomplete) destination file */ if (status >= 0) { wipeout(f); /* Zap source file */ fclose(f); remove(srcFile); fclose(g); } else { if (is_regular_file(destFile)) { wipeout(g); /* Zap destination file */ fclose(g); remove(destFile); } else { fclose(g); } fclose(f); } } return status; }
int main(int argc, Char *argv[]) { boolean canbeplotted; boolean wasplotted = false; #ifdef MAC OSErr retcode; FInfo fndrinfo; #ifdef OSX_CARBON FSRef fileRef; FSSpec fileSpec; #endif #ifdef __MWERKS__ SIOUXSetTitle("\pPHYLIP: Drawtree"); #endif argv[0] = "Drawgram"; #endif grbg = NULL; progname = argv[0]; #ifndef X_DISPLAY_MISSING nargc=1; nargv=argv; #endif init(argc, argv); emboss_getoptions("fdrawgram",argc,argv); setup_environment(argv, &canbeplotted); user_loop(&canbeplotted); if (!((previewer == winpreview || previewer == xpreview || previewer == mac) && (winaction == quitnow))) { previewing = false; initplotter(spp,fontname); numlines = dotmatrix ? ((long)floor(yunitspercm * ysize + 0.5)/strpdeep) : 1; if (plotter != ibm) printf("\nWriting plot file ...\n"); drawit(fontname,&xoffset,&yoffset,numlines,root); finishplotter(); FClose(plotfile); wasplotted = true; printf("\nPlot written to file \"%s\"\n\n", pltfilename); } FClose(intree); #ifdef MAC if (plotter == pict && wasplotted){ #ifdef OSX_CARBON FSPathMakeRef((unsigned char *)pltfilename, &fileRef, NULL); FSGetCatalogInfo(&fileRef, kFSCatInfoNone, NULL, NULL, &fileSpec, NULL); FSpGetFInfo(&fileSpec, &fndrinfo); fndrinfo.fdType='PICT'; fndrinfo.fdCreator='MDRW'; FSpSetFInfo(&fileSpec, &fndrinfo); #else retcode=GetFInfo(CtoPstr(PLOTFILE),0,&fndrinfo); fndrinfo.fdType='PICT'; fndrinfo.fdCreator='MDRW'; retcode=SetFInfo(CtoPstr(PLOTFILE),0,&fndrinfo); #endif } if (plotter == lw && wasplotted){ #ifdef OSX_CARBON FSPathMakeRef((unsigned char *)pltfilename, &fileRef, NULL); FSGetCatalogInfo(&fileRef, kFSCatInfoNone, NULL, NULL, &fileSpec, NULL); FSpGetFInfo(&fileSpec, &fndrinfo); fndrinfo.fdType='TEXT'; FSpSetFInfo(&fileSpec, &fndrinfo); #else retcode=GetFInfo(CtoPstr(PLOTFILE),0,&fndrinfo); fndrinfo.fdType='TEXT'; retcode=SetFInfo(CtoPstr(PLOTFILE),0,&fndrinfo); #endif } #endif printf("Done.\n\n"); #ifdef WIN32 phyRestoreConsoleAttributes(); #endif embExit(); return 0; }