Subversion Repositories filter_foundry

Rev

Rev 193 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /*
  2.     This file is part of a common library
  3.     Copyright (C) 2002-7 Toby Thain, toby@telegraphics.com.au
  4.  
  5.     This program is free software; you can redistribute it and/or modify
  6.     it under the terms of the GNU General Public License as published by  
  7.     the Free Software Foundation; either version 2 of the License, or
  8.     (at your option) any later version.
  9.  
  10.     This program is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.     GNU General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU General Public License  
  16.     along with this program; if not, write to the Free Software
  17.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  18. */
  19.  
  20. #include <stdio.h>
  21.  
  22. #include "file_compat.h"
  23. #include "str.h"
  24.  
  25. OSErr FSWrite(FILEREF refNum, long *count, const void *buffPtr){
  26.         long n = *count;
  27.         *count = fwrite(buffPtr,1,*count,refNum);
  28.         return *count == n ? noErr : ioErr ;
  29. }
  30. OSErr FSRead(FILEREF refNum, long *count, void *buffPtr){
  31.         long n = *count;
  32.         *count = fread(buffPtr,1,*count,refNum);
  33.         return *count == n ? noErr : ioErr ;
  34. }
  35.  
  36. OSErr FSClose(FILEREF refNum){
  37.         return fclose(refNum) ? noErr : ioErr ;
  38. }
  39.  
  40. OSErr GetFPos(FILEREF refNum, FILEPOS *filePos){
  41.         *filePos = ftell(refNum);
  42.         return noErr;
  43. }
  44.  
  45. OSErr SetFPos(FILEREF refNum, short posMode, long posOff){
  46.         int whence[] = {0,SEEK_SET,SEEK_END,SEEK_CUR};
  47.         return fseek(refNum,posOff,whence[posMode]) ? ioErr : noErr;
  48. }
  49.  
  50. #if 0
  51. OSErr FSpOpenDF(const FSSpec *spec, int8 permission, FILEREF *refNum){
  52.         DWORD perm[] = {GENERIC_READ|GENERIC_WRITE,GENERIC_READ,GENERIC_WRITE,GENERIC_READ|GENERIC_WRITE};
  53.                
  54.         myp2cstr((StringPtr)spec->name);
  55.         *refNum = CreateFile((char*)spec->name,perm[permission],0,0,OPEN_EXISTING,0,0);
  56. //      sprintf(s,"FSpOpenDF(\"%s\",\"%s\"):%#x",spec->name,perm[permission],*refNum); dbg(s);
  57.         myc2pstr((char*)spec->name);
  58.         return *refNum == INVALID_HANDLE_VALUE ? ioErr : noErr ;
  59. }
  60. /*
  61. OSErr FSpOpenDF(const FSSpec *spec, int8 permission, FILEREF *refNum){
  62.         char *perm[] = {"wb+","rb","wb","rwb"};
  63.         OSErr e;
  64.                
  65.         myp2cstr((unsigned char*)spec->name);
  66.         e = (*refNum = fopen(spec->name,perm[permission])) ? noErr : ioErr;
  67.         sprintf(s,"FSpOpenDF(\"%s\",\"%s\"):%#x",spec->name,perm[permission],*refNum); dbg(s);
  68.         myc2pstr(spec->name);
  69.         return e;
  70. }
  71. */
  72. OSErr FSpCreate(const FSSpec *spec, OSType creator, OSType fileType, ScriptCode scriptTag){
  73.         HANDLE h;
  74.         myp2cstr((unsigned char*)spec->name);
  75.         h = CreateFile((char*)spec->name,0,0,0,CREATE_NEW,0,0);
  76. //      sprintf(s,"FSpCreate(\"%s\"):%#x",spec->name,h); dbg(s);
  77.         myc2pstr((char*)spec->name);
  78.         if( h == INVALID_HANDLE_VALUE )
  79.                 return ioErr;
  80.         else{
  81.                 CloseHandle(h);
  82.                 return noErr ;
  83.         }
  84. }
  85.  
  86. OSErr FSpDelete(const FSSpec *spec){
  87.         BOOL f;
  88.         myp2cstr((StringPtr)spec->name);
  89.         f = DeleteFile((char*)spec->name);
  90.         myc2pstr((char*)spec->name);
  91.         return f ? noErr : ioErr ;
  92. }
  93.  
  94. OSErr GetEOF(FILEREF   refNum,long *  logEOF){
  95.         DWORD n = GetFileSize(refNum,&n);
  96. //      sprintf(s,"GetEOF(%#x):%d",refNum,n); dbg(s);
  97.         *logEOF = n;
  98.         return n == 0xFFFFFFFF ? ioErr : noErr;
  99. }
  100. #endif
  101.