Changeset c594489 in mainline


Ignore:
Timestamp:
2006-05-31T18:54:25Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
ad123964
Parents:
1c20e22
Message:

More things to make tetris helenos compatibile.

Files:
3 added
7 edited

Legend:

Unmodified
Added
Removed
  • libc/Makefile

    r1c20e22 rc594489  
    7070        generic/libadt/list.o \
    7171        generic/libadt/hash_table.o \
    72         generic/time.c
     72        generic/time.c \
     73        generic/err.c \
     74        generic/stdlib.c
    7375
    7476ARCH_SOURCES += \
  • libc/generic/string.c

    r1c20e22 rc594489  
    247247        return (sgn?-number:number);
    248248}
     249
     250char *strcpy(char *dest, const char *src)
     251{
     252        while (*(dest++) = *(src++))
     253                ;
     254}
     255
     256char *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
    129#ifndef _libc_ASYNC_H_
    230#define _libc_ASYNC_H_
  • libc/include/stdlib.h

    r1c20e22 rc594489  
    3636#define exit(status)    _exit((status))
    3737
     38#define RAND_MAX 714025
     39
     40extern long int random(void);
     41extern void srandom(unsigned int seed);
     42
     43static inline int rand(void)
     44{
     45        return random();
     46}
     47static inline void srand(unsigned int seed)
     48{
     49        srandom(seed);
     50}
     51
     52
    3853#endif
  • libc/include/string.h

    r1c20e22 rc594489  
    4040int strcmp(const char *, const char *);
    4141
     42char *strcpy(char *dest, const char *src);
     43char *strncpy(char *dest, const char *src, size_t n);
     44
    4245size_t strlen(const char *str);
    4346
    44 int strcmp(const char *str1, const char *str2);
    4547char *strchr(const char *str, int c);
    4648char *strrchr(const char *str, int c);
  • tetris/screen.c

    r1c20e22 rc594489  
    4343
    4444#include <err.h>
    45 #include <setjmp.h>
    46 #include <signal.h>
     45//#include <setjmp.h>
     46//#include <signal.h>
    4747#include <stdio.h>
    4848#include <stdlib.h>
     
    205205
    206206/* 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/* } */
    221221
    222222static void
    223223scr_stop(int sig)
    224224{
    225         sigset_t sigset;
     225//      sigset_t sigset;
    226226
    227227        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); */
    232232        scr_set();
    233233        scr_msg(key_msg, 1);
     
    242242        struct winsize ws;
    243243        struct termios newtt;
    244         sigset_t sigset, osigset;
     244//      sigset_t sigset, osigset;
    245245        void (*ttou)(int);
    246246
    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); */
    262262        Rows = 0, Cols = 0;
    263263        if (ioctl(0, TIOCGWINSZ, &ws) == 0) {
     
    284284        if (tcsetattr(0, TCSADRAIN, &newtt) < 0)
    285285                stop("tcsetattr() fails");
    286         (void) sigprocmask(SIG_BLOCK, &sigset, &osigset);
     286/*      (void) sigprocmask(SIG_BLOCK, &sigset, &osigset); */
    287287
    288288        /*
     
    292292        if (TIstr)
    293293                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); */
    298298
    299299        isset = 1;
    300         (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0);
     300//      (void) sigprocmask(SIG_SETMASK, &osigset, (sigset_t *)0);
    301301        scr_clear();
    302302}
     
    308308scr_end(void)
    309309{
    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); */
    316316        /* move cursor to last line */
    317317        if (LLstr)
     
    322322        if (TEstr)
    323323                putstr(TEstr);  /* termcap(5) says this is not padded */
    324         (void) fflush(stdout);
     324//      (void) fflush(stdout);
    325325        (void) tcsetattr(0, TCSADRAIN, &oldtt);
    326326        isset = 0;
    327327        /* 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); */
    330330}
    331331
     
    366366        regcell so, cur_so = 0;
    367367        int i, ccol, j;
    368         sigset_t sigset, osigset;
     368//      sigset_t sigset, osigset;
    369369        static const struct shape *lastshape;
    370370
    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); */
    374374
    375375        /* always leave cursor after last displayed point */
     
    466466        if (cur_so)
    467467                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); */
    470470}
    471471
  • tetris/tetris.c

    r1c20e22 rc594489  
    4646 */
    4747
    48 #include <sys/param.h>
     48//#include <sys/param.h>
    4949#include <sys/time.h>
    5050#include <sys/types.h>
     
    152152        return (tmp);
    153153}
    154        
     154
     155static void srandomdev(void)
     156{
     157        struct timeval tv;
     158
     159        gettimeofday(&tv, NULL);
     160        srandom(tv.tv_sec + tv.tv_usec / 100000);
     161}
    155162
    156163int
     
    217224                }
    218225                if (keys[i] == ' ')
    219                         strlcpy(key_write[i], "<space>", sizeof key_write[i]);
     226                        strncpy(key_write[i], "<space>", sizeof key_write[i]);
    220227                else {
    221228                        key_write[i][0] = keys[i];
     
    292299                                scr_msg(key_msg, 0);
    293300                                scr_msg(msg, 1);
    294                                 (void) fflush(stdout);
     301//                              (void) fflush(stdout);
    295302                        } while (rwait((struct timeval *)NULL) == -1);
    296303                        scr_msg(msg, 0);
Note: See TracChangeset for help on using the changeset viewer.