Changeset c594489 in mainline
- Timestamp:
- 2006-05-31T18:54:25Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- ad123964
- Parents:
- 1c20e22
- Files:
-
- 3 added
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
libc/Makefile
r1c20e22 rc594489 70 70 generic/libadt/list.o \ 71 71 generic/libadt/hash_table.o \ 72 generic/time.c 72 generic/time.c \ 73 generic/err.c \ 74 generic/stdlib.c 73 75 74 76 ARCH_SOURCES += \ -
libc/generic/string.c
r1c20e22 rc594489 247 247 return (sgn?-number:number); 248 248 } 249 250 char *strcpy(char *dest, const char *src) 251 { 252 while (*(dest++) = *(src++)) 253 ; 254 } 255 256 char *strncpy(char *dest, const char *src, size_t n) 257 { 258 while (*(dest++) = *(src++) && --n) 259 ; 260 } -
libc/include/async.h
r1c20e22 rc594489 1 /* 2 * Copyright (C) 2006 Ondrej Palkovsky 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 9 * - Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * - Redistributions in binary form must reproduce the above copyright 12 * notice, this list of conditions and the following disclaimer in the 13 * documentation and/or other materials provided with the distribution. 14 * - The name of the author may not be used to endorse or promote products 15 * derived from this software without specific prior written permission. 16 * 17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR 18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, 21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT 22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF 26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 */ 28 1 29 #ifndef _libc_ASYNC_H_ 2 30 #define _libc_ASYNC_H_ -
libc/include/stdlib.h
r1c20e22 rc594489 36 36 #define exit(status) _exit((status)) 37 37 38 #define RAND_MAX 714025 39 40 extern long int random(void); 41 extern void srandom(unsigned int seed); 42 43 static inline int rand(void) 44 { 45 return random(); 46 } 47 static inline void srand(unsigned int seed) 48 { 49 srandom(seed); 50 } 51 52 38 53 #endif -
libc/include/string.h
r1c20e22 rc594489 40 40 int strcmp(const char *, const char *); 41 41 42 char *strcpy(char *dest, const char *src); 43 char *strncpy(char *dest, const char *src, size_t n); 44 42 45 size_t strlen(const char *str); 43 46 44 int strcmp(const char *str1, const char *str2);45 47 char *strchr(const char *str, int c); 46 48 char *strrchr(const char *str, int c); -
tetris/screen.c
r1c20e22 rc594489 43 43 44 44 #include <err.h> 45 #include <setjmp.h>46 #include <signal.h>45 //#include <setjmp.h> 46 //#include <signal.h> 47 47 #include <stdio.h> 48 48 #include <stdlib.h> … … 205 205 206 206 /* this foolery is needed to modify tty state `atomically' */ 207 static jmp_buf scr_onstop;208 209 static void 210 stopset(int sig) 211 { 212 sigset_t sigset; 213 214 (void) signal(sig, SIG_DFL); 215 (void) kill(getpid(), sig); 216 sigemptyset(&sigset); 217 sigaddset(&sigset, sig); 218 (void) sigprocmask(SIG_UNBLOCK, &sigset, (sigset_t *)0); 219 longjmp(scr_onstop, 1); 220 } 207 //static jmp_buf scr_onstop; 208 209 /* static void */ 210 /* stopset(int sig) */ 211 /* { */ 212 /* sigset_t sigset; */ 213 214 /* (void) signal(sig, SIG_DFL); */ 215 /* (void) kill(getpid(), sig); */ 216 /* sigemptyset(&sigset); */ 217 /* sigaddset(&sigset, sig); */ 218 /* (void) sigprocmask(SIG_UNBLOCK, &sigset, (sigset_t *)0); */ 219 /* longjmp(scr_onstop, 1); */ 220 /* } */ 221 221 222 222 static void 223 223 scr_stop(int sig) 224 224 { 225 sigset_t sigset;225 // sigset_t sigset; 226 226 227 227 scr_end(); 228 (void) kill(getpid(), sig); 229 sigemptyset(&sigset); 230 sigaddset(&sigset, sig); 231 (void) sigprocmask(SIG_UNBLOCK, &sigset, (sigset_t *)0); 228 /* (void) kill(getpid(), sig); */ 229 /* sigemptyset(&sigset); */ 230 /* sigaddset(&sigset, sig); */ 231 /* (void) sigprocmask(SIG_UNBLOCK, &sigset, (sigset_t *)0); */ 232 232 scr_set(); 233 233 scr_msg(key_msg, 1); … … 242 242 struct winsize ws; 243 243 struct termios newtt; 244 sigset_t sigset, osigset;244 // sigset_t sigset, osigset; 245 245 void (*ttou)(int); 246 246 247 sigemptyset(&sigset); 248 sigaddset(&sigset, SIGTSTP); 249 sigaddset(&sigset, SIGTTOU); 250 (void) sigprocmask(SIG_BLOCK, &sigset, &osigset); 251 if ((tstp = signal(SIGTSTP, stopset)) == SIG_IGN) 252 (void) signal(SIGTSTP, SIG_IGN); 253 if ((ttou = signal(SIGTTOU, stopset)) == SIG_IGN) 254 (void) signal(SIGTTOU, SIG_IGN); 255 /* 256 * At last, we are ready to modify the tty state. If 257 * we stop while at it, stopset() above will longjmp back 258 * to the setjmp here and we will start over. 259 260 (void) setjmp(scr_onstop); 261 (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0); 247 /* sigemptyset(&sigset); */ 248 /* sigaddset(&sigset, SIGTSTP); */ 249 /* sigaddset(&sigset, SIGTTOU); */ 250 /* (void) sigprocmask(SIG_BLOCK, &sigset, &osigset); */ 251 /* if ((tstp = signal(SIGTSTP, stopset)) == SIG_IGN) */ 252 /* (void) signal(SIGTSTP, SIG_IGN); */ 253 /* if ((ttou = signal(SIGTTOU, stopset)) == SIG_IGN) */ 254 /* (void) signal(SIGTTOU, SIG_IGN); */ 255 /* /\* */ 256 /* * At last, we are ready to modify the tty state. If */ 257 /* * we stop while at it, stopset() above will longjmp back */ 258 /* * to the setjmp here and we will start over. */ 259 /* *\/ */ 260 /* (void) setjmp(scr_onstop); */ 261 /* (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0); */ 262 262 Rows = 0, Cols = 0; 263 263 if (ioctl(0, TIOCGWINSZ, &ws) == 0) { … … 284 284 if (tcsetattr(0, TCSADRAIN, &newtt) < 0) 285 285 stop("tcsetattr() fails"); 286 (void) sigprocmask(SIG_BLOCK, &sigset, &osigset); 286 /* (void) sigprocmask(SIG_BLOCK, &sigset, &osigset); */ 287 287 288 288 /* … … 292 292 if (TIstr) 293 293 putstr(TIstr); /* termcap(5) says this is not padded */ 294 if (tstp != SIG_IGN) 295 (void) signal(SIGTSTP, scr_stop); 296 if (ttou != SIG_IGN) 297 (void) signal(SIGTTOU, ttou); 294 /* if (tstp != SIG_IGN) */ 295 /* (void) signal(SIGTSTP, scr_stop); */ 296 /* if (ttou != SIG_IGN) */ 297 /* (void) signal(SIGTTOU, ttou); */ 298 298 299 299 isset = 1; 300 (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0);300 // (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0); 301 301 scr_clear(); 302 302 } … … 308 308 scr_end(void) 309 309 { 310 sigset_t sigset, osigset;311 312 sigemptyset(&sigset); 313 sigaddset(&sigset, SIGTSTP); 314 sigaddset(&sigset, SIGTTOU); 315 (void) sigprocmask(SIG_BLOCK, &sigset, &osigset); 310 // sigset_t sigset, osigset; 311 312 /* sigemptyset(&sigset); */ 313 /* sigaddset(&sigset, SIGTSTP); */ 314 /* sigaddset(&sigset, SIGTTOU); */ 315 /* (void) sigprocmask(SIG_BLOCK, &sigset, &osigset); */ 316 316 /* move cursor to last line */ 317 317 if (LLstr) … … 322 322 if (TEstr) 323 323 putstr(TEstr); /* termcap(5) says this is not padded */ 324 (void) fflush(stdout);324 // (void) fflush(stdout); 325 325 (void) tcsetattr(0, TCSADRAIN, &oldtt); 326 326 isset = 0; 327 327 /* restore signals */ 328 (void) signal(SIGTSTP, tstp); 329 (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0); 328 /* (void) signal(SIGTSTP, tstp); */ 329 /* (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0); */ 330 330 } 331 331 … … 366 366 regcell so, cur_so = 0; 367 367 int i, ccol, j; 368 sigset_t sigset, osigset;368 // sigset_t sigset, osigset; 369 369 static const struct shape *lastshape; 370 370 371 sigemptyset(&sigset); 372 sigaddset(&sigset, SIGTSTP); 373 (void) sigprocmask(SIG_BLOCK, &sigset, &osigset); 371 /* sigemptyset(&sigset); */ 372 /* sigaddset(&sigset, SIGTSTP); */ 373 /* (void) sigprocmask(SIG_BLOCK, &sigset, &osigset); */ 374 374 375 375 /* always leave cursor after last displayed point */ … … 466 466 if (cur_so) 467 467 putpad(SEstr); 468 (void) fflush(stdout); 469 (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0); 468 /* (void) fflush(stdout); */ 469 /* (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0); */ 470 470 } 471 471 -
tetris/tetris.c
r1c20e22 rc594489 46 46 */ 47 47 48 #include <sys/param.h>48 //#include <sys/param.h> 49 49 #include <sys/time.h> 50 50 #include <sys/types.h> … … 152 152 return (tmp); 153 153 } 154 154 155 static void srandomdev(void) 156 { 157 struct timeval tv; 158 159 gettimeofday(&tv, NULL); 160 srandom(tv.tv_sec + tv.tv_usec / 100000); 161 } 155 162 156 163 int … … 217 224 } 218 225 if (keys[i] == ' ') 219 str lcpy(key_write[i], "<space>", sizeof key_write[i]);226 strncpy(key_write[i], "<space>", sizeof key_write[i]); 220 227 else { 221 228 key_write[i][0] = keys[i]; … … 292 299 scr_msg(key_msg, 0); 293 300 scr_msg(msg, 1); 294 (void) fflush(stdout);301 // (void) fflush(stdout); 295 302 } while (rwait((struct timeval *)NULL) == -1); 296 303 scr_msg(msg, 0);
Note:
See TracChangeset
for help on using the changeset viewer.