diff -r 59758314f811 -r d4524d6a4472 Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/riscos_8c_source.html --- a/Symbian3/Examples/guid-6013a680-57f9-415b-8851-c4fa63356636/riscos_8c_source.html Fri Jun 11 15:24:34 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,267 +0,0 @@ - - -
- -00001 /* -00002 * riscos.c -00003 * Copyright (C) 2001,2002 A.J. van Os; Released under GPL -00004 * -00005 * Description: -00006 * RISC OS only functions -00007 */ -00008 -00009 #include <string.h> -00010 #include <stdlib.h> -00011 #include <stdarg.h> -00012 #include "DeskLib:Error.h" -00013 #include "DeskLib:SWI.h" -00014 #include "antiword.h" -00015 -00016 #if !defined(DrawFile_Render) -00017 #define DrawFile_Render 0x045540 -00018 #endif /* !DrawFile_Render */ -00019 #if !defined(JPEG_Info) -00020 #define JPEG_Info 0x049980 -00021 #endif /* !JPEG_Info */ -00022 -00023 /* -00024 * werr - write an error message and exit if needed -00025 */ -00026 void -00027 werr(int iFatal, const char *szFormat, ...) -00028 { -00029 va_list tArg; -00030 -00031 va_start(tArg, szFormat); -00032 Error_Report(iFatal, (char *)szFormat, tArg); -00033 va_end(tArg); -00034 switch (iFatal) { -00035 case 0: /* The message is just a warning, so no exit */ -00036 return; -00037 case 1: /* Fatal error with a standard exit */ -00038 exit(EXIT_FAILURE); -00039 default: /* Fatal error with a non-standard exit */ -00040 exit(iFatal); -00041 } -00042 } /* end of werr */ -00043 -00044 /* -00045 * iGetFiletype -00046 * This function will get the filetype of the given file. -00047 * returns the filetype. -00048 */ -00049 int -00050 iGetFiletype(const char *szFilename) -00051 { -00052 os_error *e; -00053 int iType; -00054 -00055 fail(szFilename == NULL || szFilename[0] == '\0'); -00056 -00057 e = SWI(2, 7, SWI_OS_File | XOS_Bit, -00058 23, szFilename, -00059 NULL, NULL, NULL, NULL, NULL, NULL, &iType); -00060 if (e == NULL) { -00061 return iType; -00062 } -00063 werr(0, "Get Filetype error %d: %s", e->errnum, e->errmess); -00064 return -1; -00065 } /* end of iGetFiletype */ -00066 -00067 /* -00068 * vSetFiletype -00069 * This procedure will set the filetype of the given file to the given -00070 * type. -00071 */ -00072 void -00073 vSetFiletype(const char *szFilename, int iFiletype) -00074 { -00075 os_error *e; -00076 -00077 fail(szFilename == NULL || szFilename[0] == '\0'); -00078 -00079 if (iFiletype < 0x000 || iFiletype > 0xfff) { -00080 return; -00081 } -00082 e = SWI(3, 0, SWI_OS_File | XOS_Bit, -00083 18, szFilename, iFiletype); -00084 if (e != NULL) { -00085 switch (e->errnum) { -00086 case 0x000113: /* ROM */ -00087 case 0x0104e1: /* Read-only floppy DOSFS */ -00088 case 0x0108c9: /* Read-only floppy ADFS */ -00089 case 0x013803: /* Read-only ArcFS */ -00090 case 0x80344a: /* CD-ROM */ -00091 break; -00092 default: -00093 werr(0, "Set Filetype error %d: %s", -00094 e->errnum, e->errmess); -00095 break; -00096 } -00097 } -00098 } /* end of vSetFileType */ -00099 -00100 /* -00101 * Check if the directory part of the given file exists, make the directory -00102 * if it does not exist yet. -00103 * Returns TRUE in case of success, otherwise FALSE. -00104 */ -00105 BOOL -00106 bMakeDirectory(const char *szFilename) -00107 { -00108 os_error *e; -00109 char *pcLastDot; -00110 int iObjectType; -00111 char szDirectory[PATH_MAX+1]; -00112 -00113 DBG_MSG("bMakeDirectory"); -00114 fail(szFilename == NULL || szFilename[0] == '\0'); -00115 DBG_MSG(szFilename); -00116 -00117 if (strlen(szFilename) >= sizeof(szDirectory)) { -00118 DBG_DEC(strlen(szFilename)); -00119 return FALSE; -00120 } -00121 strcpy(szDirectory, szFilename); -00122 pcLastDot = strrchr(szDirectory, '.'); -00123 if (pcLastDot == NULL) { -00124 /* No directory equals current directory */ -00125 DBG_MSG("No directory part given"); -00126 return TRUE; -00127 } -00128 *pcLastDot = '\0'; -00129 DBG_MSG(szDirectory); -00130 /* Check if the name exists */ -00131 e = SWI(2, 1, SWI_OS_File | XOS_Bit, -00132 17, szDirectory, -00133 &iObjectType); -00134 if (e != NULL) { -00135 werr(0, "Directory check %d: %s", e->errnum, e->errmess); -00136 return FALSE; -00137 } -00138 if (iObjectType == 2) { -00139 /* The name exists and it is a directory */ -00140 DBG_MSG("The directory already exists"); -00141 return TRUE; -00142 } -00143 if (iObjectType != 0) { -00144 /* The name exists and it is not a directory */ -00145 DBG_DEC(iObjectType); -00146 return FALSE; -00147 } -00148 /* The name does not exist, make the directory */ -00149 e = SWI(5, 0, SWI_OS_File | XOS_Bit, -00150 8, szDirectory, 0, 0, 0); -00151 if (e != NULL) { -00152 werr(0, "I can't make a directory %d: %s", -00153 e->errnum, e->errmess); -00154 return FALSE; -00155 } -00156 return TRUE; -00157 } /* end of bMakeDirectory */ -00158 -00159 /* -00160 * iReadCurrentAlphabetNumber -00161 * This function reads the current Alphabet number. -00162 * Returns the current Alphabet number when successful, otherwise -1 -00163 */ -00164 int -00165 iReadCurrentAlphabetNumber(void) -00166 { -00167 os_error *e; -00168 int iAlphabetNumber; -00169 -00170 e = SWI(2, 2, SWI_OS_Byte | XOS_Bit, -00171 71, 127, -00172 NULL, &iAlphabetNumber); -00173 if (e == NULL) { -00174 return iAlphabetNumber; -00175 } -00176 werr(0, "Read alphabet error %d: %s", e->errnum, e->errmess); -00177 return -1; -00178 } /* end of iReadCurrentAlphabetNumber */ -00179 -00180 /* -00181 * iGetRiscOsVersion - get the RISC OS version number -00182 * -00183 * returns the RISC OS version * 100 -00184 */ -00185 int -00186 iGetRiscOsVersion(void) -00187 { -00188 os_error *e; -00189 int iVersion; -00190 -00191 e = SWI(3, 2, SWI_OS_Byte | XOS_Bit, -00192 129, 0, 0xff, -00193 NULL, &iVersion); -00194 if (e != NULL) { -00195 werr(0, "Read RISC OS version error %d: %s", -00196 e->errnum, e->errmess); -00197 return 0; -00198 } -00199 switch (iVersion) { -00200 case 0xa0: /* Arthur 1.20 */ -00201 return 120; -00202 case 0xa1: /* RISC OS 2.00 */ -00203 return 200; -00204 case 0xa2: /* RISC OS 2.01 */ -00205 return 201; -00206 case 0xa3: /* RISC OS 3.00 */ -00207 return 300; -00208 case 0xa4: /* RISC OS 3.1x */ -00209 return 310; -00210 case 0xa5: /* RISC OS 3.50 */ -00211 return 350; -00212 case 0xa6: /* RISC OS 3.60 */ -00213 return 360; -00214 case 0xa7: /* RISC OS 3.7x */ -00215 return 370; -00216 case 0xa8: /* RISC OS 4.0x */ -00217 return 400; -00218 default: -00219 if (iVersion >= 0xa9 && iVersion <= 0xaf) { -00220 /* RISC OS 4.10 and up */ -00221 return 410; -00222 } -00223 /* Unknown version */ -00224 return 0; -00225 } -00226 } /* end of iGetRiscOsVersion */ -00227 -00228 #if defined(DEBUG) -00229 BOOL -00230 bGetJpegInfo(UCHAR *pucJpeg, size_t tJpegSize) -00231 { -00232 os_error *e; -00233 int iReg0, iReg4, iReg5; -00234 -00235 e = SWI(3, 6, JPEG_Info | XOS_Bit, -00236 0x00, pucJpeg, tJpegSize, -00237 &iReg0, NULL, NULL, NULL, &iReg4, &iReg5); -00238 if (e == NULL) { -00239 if (iReg0 & BIT(2)) { -00240 DBG_MSG("Pixel density is a simple ratio"); -00241 } else { -00242 DBG_MSG("Pixel density is in dpi"); -00243 } -00244 DBG_DEC(iReg4); -00245 DBG_DEC(iReg5); -00246 return TRUE; -00247 } -00248 werr(0, "JPEG Info error %d: %s", e->errnum, e->errmess); -00249 return FALSE; -00250 } /* end of bGetJpegInfo */ -00251 #endif /* DEBUG */ -