24.01.2014 Views

Codice

Codice

Codice

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

376 volume VI os16<br />

Sorgenti della libreria generale 377<br />

«<br />

«<br />

«<br />

«<br />

3610024 | msg.stat.st_blksize = buffer->st_blksize;<br />

3610025 | msg.stat.st_blocks = buffer->st_blocks;<br />

3610026 | //<br />

3610027 | sys (SYS_STAT, &msg, (sizeof msg));<br />

3610028 | //<br />

3610029 | buffer->st_dev = msg.stat.st_dev;<br />

3610030 | buffer->st_ino = msg.stat.st_ino;<br />

3610031 | buffer->st_mode = msg.stat.st_mode;<br />

3610032 | buffer->st_nlink = msg.stat.st_nlink;<br />

3610033 | buffer->st_uid = msg.stat.st_uid;<br />

3610034 | buffer->st_gid = msg.stat.st_gid;<br />

3610035 | buffer->st_rdev = msg.stat.st_rdev;<br />

3610036 | buffer->st_size = msg.stat.st_size;<br />

3610037 | buffer->st_atime = msg.stat.st_atime;<br />

3610038 | buffer->st_mtime = msg.stat.st_mtime;<br />

3610039 | buffer->st_ctime = msg.stat.st_ctime;<br />

3610040 | buffer->st_blksize = msg.stat.st_blksize;<br />

3610041 | buffer->st_blocks = msg.stat.st_blocks;<br />

3610042 | //<br />

3610043 | errno = msg.errno;<br />

3610044 | errln = msg.errln;<br />

3610045 | strncpy (errfn, msg.errfn, PATH_MAX);<br />

3610046 | return (msg.ret);<br />

3610047 |}<br />

105.13.7 lib/sys/stat/umask.c<br />

Si veda la sezione 97.40.<br />

3620001 |#include <br />

3620002 |#include <br />

3620003 |#include <br />

3620004 |#include <br />

3620005 |#include <br />

3620006 |#include <br />

3620007 |//----------------------------------------------------------------------<br />

3620008 |mode_t<br />

3620009 |umask (mode_t mask)<br />

3620010 |{<br />

3620011 | sysmsg_umask_t msg;<br />

3620012 | msg.umask = mask;<br />

3620013 | sys (SYS_UMASK, &msg, (sizeof msg));<br />

3620014 | return (msg.ret);<br />

3620015 |}<br />

105.14 os16: «lib/sys/types.h»<br />

Si veda la sezione 101.2.<br />

3630001 |#ifndef _SYS_TYPES_H<br />

3630002 |#define _SYS_TYPES_H 1<br />

3630003 |//----------------------------------------------------------------------<br />

3630004 |<br />

3630005 |#include <br />

3630006 |#include <br />

3630007 |#include <br />

3630008 |#include <br />

3630009 |//----------------------------------------------------------------------<br />

3630010 |typedef long int blkcnt_t;<br />

3630011 |typedef long int blksize_t;<br />

3630012 |typedef uint16_t dev_t; // Traditional device size.<br />

3630013 |typedef unsigned int id_t;<br />

3630014 |typedef unsigned int gid_t;<br />

3630015 |typedef unsigned int uid_t;<br />

3630016 |typedef uint16_t ino_t; // Minix 1 file system inode size.<br />

3630017 |typedef uint16_t mode_t; // Minix 1 file system mode size.<br />

3630018 |typedef unsigned int nlink_t;<br />

3630019 |typedef long int off_t;<br />

3630020 |typedef int pid_t;<br />

3630021 |typedef unsigned int pthread_t;<br />

3630022 |typedef long int ssize_t;<br />

3630023 |//----------------------------------------------------------------------<br />

3630024 |// Common extentions.<br />

3630025 |//<br />

3630026 |dev_t makedev (int major, int minor);<br />

3630027 |int major (dev_t device);<br />

3630028 |int minor (dev_t device);<br />

3630029 |//----------------------------------------------------------------------<br />

3630030 |<br />

3630031 |#endif<br />

105.14.1 lib/sys/types/major.c<br />

Si veda la sezione 98.65.<br />

3640001 |#include <br />

3640002 |//----------------------------------------------------------------------<br />

3640003 |int<br />

3640004 |major (dev_t device)<br />

3640005 |{<br />

3640006 | return ((int) (device / 256));<br />

3640007 |}<br />

105.14.2 lib/sys/types/makedev.c<br />

Si veda la sezione 98.65.<br />

3650001 |#include <br />

3650002 |//----------------------------------------------------------------------<br />

3650003 |dev_t<br />

3650004 |makedev (int major, int minor)<br />

3650005 |{<br />

3650006 | return ((dev_t) (major * 256 + minor));<br />

3650007 |}<br />

105.14.3 lib/sys/types/minor.c<br />

Si veda la sezione 98.65.<br />

3660001 |#include <br />

3660002 |//----------------------------------------------------------------------<br />

3660003 |int<br />

3660004 |minor (dev_t device)<br />

3660005 |{<br />

3660006 | return ((dev_t) (device & 0x00FF));<br />

3660007 |}<br />

105.15 os16: «lib/sys/wait.h»<br />

Si veda la sezione 101.2.<br />

3670001 |#ifndef _SYS_WAIT_H<br />

3670002 |#define _SYS_WAIT_H 1<br />

3670003 |<br />

3670004 |#include <br />

3670005 |<br />

3670006 |//----------------------------------------------------------------------<br />

3670007 |pid_t wait (int *status);<br />

3670008 |//----------------------------------------------------------------------<br />

3670009 |<br />

3670010 |#endif<br />

105.15.1 lib/sys/wait/wait.c<br />

Si veda la sezione 97.43.<br />

3680001 |#include <br />

3680002 |#include <br />

3680003 |#include <br />

3680004 |#include <br />

3680005 |#include <br />

3680006 |//----------------------------------------------------------------------<br />

3680007 |pid_t<br />

3680008 |wait (int *status)<br />

3680009 |{<br />

3680010 | sysmsg_wait_t msg;<br />

3680011 | msg.ret = 0;<br />

3680012 | msg.errno = 0;<br />

3680013 | msg.status = 0;<br />

3680014 | while (msg.ret == 0)<br />

3680015 | {<br />

3680016 | //<br />

3680017 | // Loop as long as there are children, an none is dead.<br />

3680018 | //<br />

3680019 | sys (SYS_WAIT, &msg, (sizeof msg));<br />

3680020 | }<br />

3680021 | errno = msg.errno;<br />

3680022 | errln = msg.errln;<br />

3680023 | strncpy (errfn, msg.errfn, PATH_MAX);<br />

3680024 | //<br />

3680025 | if (status != NULL)<br />

3680026 | {<br />

3680027 | //<br />

3680028 | // Only the low eight bits are returned.<br />

3680029 | //<br />

3680030 | *status = (msg.status & 0x00FF);<br />

3680031 | }<br />

3680032 | return (msg.ret);<br />

3680033 |}<br />

105.16 os16: «lib/time.h»<br />

Si veda la sezione 101.2.<br />

3690001 |#ifndef _TIME_H<br />

3690002 |#define _TIME_H 1<br />

3690003 |//----------------------------------------------------------------------<br />

3690004 |<br />

3690005 |#include <br />

3690006 |#include <br />

3690007 |#include <br />

3690008 |#include <br />

3690009 |#include <br />

3690010 |#include <br />

3690011 |#include <br />

3690012 |//----------------------------------------------------------------------<br />

3690013 |#define CLOCKS_PER_SEC 18 // Should be 18.22 Hz, but it is a ‘int’.<br />

3690014 |//----------------------------------------------------------------------<br />

3690015 |struct tm {int tm_sec; int tm_min; int tm_hour;<br />

3690016 | int tm_mday; int tm_mon; int tm_year;<br />

3690017 | int tm_wday; int tm_yday; int tm_isdst;};<br />

3690018 |//----------------------------------------------------------------------<br />

3690019 |clock_t clock (void);<br />

3690020 |time_t time (time_t *timer);<br />

3690021 |int stime (time_t *timer);<br />

3690022 |double difftime (time_t time1, time_t time0);<br />

3690023 |time_t mktime (struct tm *timeptr);<br />

3690024 |struct tm *gmtime (const time_t *timer);<br />

3690025 |struct tm *localtime (const time_t *timer);<br />

3690026 |char *asctime (const struct tm *timeptr);<br />

3690027 |char *ctime (const time_t *timer);<br />

3690028 |size_t strftime (char * restrict s, size_t maxsize,<br />

3690029 | const char * restrict format,<br />

3690030 | const struct tm * restrict timeptr);<br />

3690031 |//----------------------------------------------------------------------<br />

3690032 |#define difftime(t1,t0) ((double)((t1)-(t0)))<br />

3690033 |#define ctime(t) (asctime (localtime (t)))<br />

3690034 |#define localtime(t) (gmtime (t))<br />

3690035 |//----------------------------------------------------------------------<br />

3690036 |<br />

3690037 |#endif<br />

«<br />

«<br />

«<br />

«

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!