1/*********************************************************************** 2* * 3* This software is part of the ast package * 4* Copyright (c) 1985-2011 AT&T Intellectual Property * 5* and is licensed under the * 6* Common Public License, Version 1.0 * 7* by AT&T Intellectual Property * 8* * 9* A copy of the License is available at * 10* http://www.opensource.org/licenses/cpl1.0.txt * 11* (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) * 12* * 13* Information and Software Systems Research * 14* AT&T Research * 15* Florham Park NJ * 16* * 17* Glenn Fowler <gsf@research.att.com> * 18* David Korn <dgk@research.att.com> * 19* Phong Vo <kpv@research.att.com> * 20* * 21***********************************************************************/ 22#pragma prototyped 23/* 24 * Glenn Fowler 25 * AT&T Research 26 * 27 * generate mode features 28 */ 29 30#include "limits.h" 31 32#include "FEATURE/param" 33 34#include <modecanon.h> 35 36int 37main() 38{ 39 int n; 40 int idperm; 41 int idtype; 42 43 idperm = idtype = 1; 44#ifndef S_ITYPE 45#ifdef S_IFMT 46 printf("#define S_ITYPE(m) ((m)&S_IFMT)\n"); 47#else 48 printf("#define S_ITYPE(m) ((m)&~S_IPERM)\n"); 49#endif 50#endif 51#ifdef S_ISBLK 52 if (!S_ISBLK(X_IFBLK)) idtype = 0; 53#else 54#ifdef S_IFBLK 55 printf("#define S_ISBLK(m) (S_ITYPE(m)==S_IFBLK)\n"); 56#else 57 printf("#define S_ISBLK(m) 0\n"); 58#endif 59#endif 60#ifdef S_ISCHR 61 if (!S_ISCHR(X_IFCHR)) idtype = 0; 62#else 63#ifdef S_IFCHR 64 printf("#define S_ISCHR(m) (S_ITYPE(m)==S_IFCHR)\n"); 65#else 66 printf("#define S_ISCHR(m) 0\n"); 67#endif 68#endif 69#ifdef S_ISCTG 70 if (!S_ISCTG(X_IFCTG)) idtype = 0; 71#else 72#ifdef S_IFCTG 73 printf("#define S_ISCTG(m) (S_ITYPE(m)==S_IFCTG)\n"); 74#endif 75#endif 76#ifdef S_ISDIR 77 if (!S_ISDIR(X_IFDIR)) idtype = 0; 78#else 79#ifdef S_IFDIR 80 printf("#define S_ISDIR(m) (S_ITYPE(m)==S_IFDIR)\n"); 81#else 82 printf("#define S_ISDIR(m) 0\n"); 83#endif 84#endif 85#ifdef S_ISFIFO 86 if (!S_ISFIFO(X_IFIFO)) idtype = 0; 87#else 88#ifdef S_IFIFO 89 printf("#define S_ISFIFO(m) (S_ITYPE(m)==S_IFIFO)\n"); 90#else 91 printf("#define S_ISFIFO(m) 0\n"); 92#endif 93#endif 94#ifdef S_ISLNK 95 if (!S_ISLNK(X_IFLNK)) idtype = 0; 96#else 97#ifdef S_IFLNK 98 printf("#define S_ISLNK(m) (S_ITYPE(m)==S_IFLNK)\n"); 99#else 100 printf("#define S_ISLNK(m) 0\n"); 101#endif 102#endif 103#ifdef S_ISREG 104 if (!S_ISREG(X_IFREG)) idtype = 0; 105#else 106#ifdef S_IFREG 107 printf("#define S_ISREG(m) (S_ITYPE(m)==S_IFREG)\n"); 108#else 109 printf("#define S_ISREG(m) 0\n"); 110#endif 111#endif 112#ifdef S_ISSOCK 113 if (!S_ISSOCK(X_IFSOCK)) idtype = 0; 114#else 115#ifdef S_IFSOCK 116 printf("#define S_ISSOCK(m) (S_ITYPE(m)==S_IFSOCK)\n"); 117#endif 118#endif 119 printf("\n"); 120#ifndef S_IPERM 121 printf("#define S_IPERM (S_ISUID|S_ISGID|S_ISVTX|S_IRWXU|S_IRWXG|S_IRWXO)\n"); 122#endif 123#ifndef S_ISUID 124 printf("#define S_ISUID 0%04o\n", X_ISUID); 125#else 126 if (S_ISUID != X_ISUID) idperm = 0; 127#endif 128#ifndef S_ISGID 129 printf("#define S_ISGID 0%04o\n", X_ISGID); 130#else 131 if (S_ISGID != X_ISGID) idperm = 0; 132#endif 133#ifndef S_ISVTX 134 printf("#define S_ISVTX 0%04o\n", X_ISVTX); 135#else 136 if (S_ISVTX != X_ISVTX) idperm = 0; 137#endif 138#ifndef S_IRUSR 139 printf("#define S_IRUSR 0%04o\n", X_IRUSR); 140#else 141 if (S_IRUSR != X_IRUSR) idperm = 0; 142#endif 143#ifndef S_IWUSR 144 printf("#define S_IWUSR 0%04o\n", X_IWUSR); 145#else 146 if (S_IWUSR != X_IWUSR) idperm = 0; 147#endif 148#ifndef S_IXUSR 149 printf("#define S_IXUSR 0%04o\n", X_IXUSR); 150#else 151 if (S_IXUSR != X_IXUSR) idperm = 0; 152#endif 153#ifndef S_IRGRP 154 printf("#define S_IRGRP 0%04o\n", X_IRGRP); 155#else 156 if (S_IRGRP != X_IRGRP) idperm = 0; 157#endif 158#ifndef S_IWGRP 159 printf("#define S_IWGRP 0%04o\n", X_IWGRP); 160#else 161 if (S_IWGRP != X_IWGRP) idperm = 0; 162#endif 163#ifndef S_IXGRP 164 printf("#define S_IXGRP 0%04o\n", X_IXGRP); 165#else 166 if (S_IXGRP != X_IXGRP) idperm = 0; 167#endif 168#ifndef S_IROTH 169 printf("#define S_IROTH 0%04o\n", X_IROTH); 170#else 171 if (S_IROTH != X_IROTH) idperm = 0; 172#endif 173#ifndef S_IWOTH 174 printf("#define S_IWOTH 0%04o\n", X_IWOTH); 175#else 176 if (S_IWOTH != X_IWOTH) idperm = 0; 177#endif 178#ifndef S_IXOTH 179 printf("#define S_IXOTH 0%04o\n", X_IXOTH); 180#else 181 if (S_IXOTH != X_IXOTH) idperm = 0; 182#endif 183#ifndef S_IRWXU 184 printf("#define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)\n"); 185#endif 186#ifndef S_IRWXG 187 printf("#define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)\n"); 188#endif 189#ifndef S_IRWXO 190 printf("#define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)\n"); 191#endif 192 printf("\n"); 193 if (idperm) printf("#define _S_IDPERM 1\n"); 194 if (idtype) printf("#define _S_IDTYPE 1\n"); 195 printf("\n"); 196#ifdef BUFFERSIZE 197 n = BUFFERSIZE; 198#else 199#ifdef MAXBSIZE 200 n = MAXBSIZE; 201#else 202#ifdef SBUFSIZE 203 n = SBUFSIZE; 204#else 205#ifdef BUFSIZ 206 n = BUFSIZ; 207#else 208 if (sizeof(char*) > 4) n = 8192; 209 else if (sizeof(char*) < 4) n = 512; 210 else n = 4096; 211#endif 212#endif 213#endif 214#endif 215 printf("#define BUFFERSIZE %u\n", n); 216 printf("\n"); 217 return 0; 218} 219