/RISCOS/unixstuff.c
http://unladen-swallow.googlecode.com/ · C · 74 lines · 58 code · 13 blank · 3 comment · 8 complexity · 8fda7123b13ca2b94bc81512db24704e MD5 · raw file
- /* Fudge unix isatty and fileno for RISCOS */
- #include "unixstuff.h"
- #include <math.h>
- #include <time.h>
- #include "oslib/osfile.h"
- int fileno(FILE *f)
- { return (int)f;
- }
- int isatty(int fn)
- { return (fn==fileno(stdin));
- }
- bits unixtime(bits ld,bits ex)
- { ld&=0xFF;
- ld-=51;
- if(ex<1855547904U) ld--;
- ex-=1855548004U;
- return ex/100+42949673U*ld-ld/25;
- }
- /* from RISC OS infozip, preserves filetype in ld */
- int acorntime(bits *ex, bits *ld, time_t utime)
- {
- unsigned timlo; /* 3 lower bytes of acorn file-time plus carry byte */
- unsigned timhi; /* 2 high bytes of acorn file-time */
- timlo = ((unsigned)utime & 0x00ffffffU) * 100 + 0x00996a00U;
- timhi = ((unsigned)utime >> 24);
- timhi = timhi * 100 + 0x0000336eU + (timlo >> 24);
- if (timhi & 0xffff0000U)
- return 1; /* calculation overflow, do not change time */
- /* insert the five time bytes into loadaddr and execaddr variables */
- *ex = (timlo & 0x00ffffffU) | ((timhi & 0x000000ffU) << 24);
- *ld = (*ld & 0xffffff00U) | ((timhi >> 8) & 0x000000ffU);
- return 0; /* subject to future extension to signal overflow */
- }
- int isdir(char *fn)
- { int ob;
- if(xosfile_read_stamped_no_path(fn,&ob,0,0,0,0,0)) return 0;
- switch (ob)
- { case osfile_IS_DIR:return 1;
- case osfile_IS_IMAGE:return 1;
- }
- return 0;
- }
- int isfile(char *fn)
- { int ob;
- if(xosfile_read_stamped_no_path(fn,&ob,0,0,0,0,0)) return 0;
- switch (ob)
- { case osfile_IS_FILE:return 1;
- case osfile_IS_IMAGE:return 1;
- }
- return 0;
- }
- int object_exists(char *fn)
- { int ob;
- if(xosfile_read_stamped_no_path(fn,&ob,0,0,0,0,0)) return 0;
- switch (ob)
- { case osfile_IS_FILE:return 1;
- case osfile_IS_DIR:return 1;
- case osfile_IS_IMAGE:return 1;
- }
- return 0;
- }