(linenum→info "unix/slp.c:2238")

bsd-games/2.17/hack/hack.rip.c

    1: /*      $NetBSD: hack.rip.c,v 1.7 2003/04/02 18:36:39 jsm Exp $      */
    2: 
    3: /*
    4:  * Copyright (c) 1985, Stichting Centrum voor Wiskunde en Informatica,
    5:  * Amsterdam
    6:  * All rights reserved.
    7:  *
    8:  * Redistribution and use in source and binary forms, with or without
    9:  * modification, are permitted provided that the following conditions are
   10:  * met:
   11:  *
   12:  * - Redistributions of source code must retain the above copyright notice,
   13:  * this list of conditions and the following disclaimer.
   14:  *
   15:  * - Redistributions in binary form must reproduce the above copyright
   16:  * notice, this list of conditions and the following disclaimer in the
   17:  * documentation and/or other materials provided with the distribution.
   18:  *
   19:  * - Neither the name of the Stichting Centrum voor Wiskunde en
   20:  * Informatica, nor the names of its contributors may be used to endorse or
   21:  * promote products derived from this software without specific prior
   22:  * written permission.
   23:  *
   24:  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
   25:  * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
   26:  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
   27:  * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
   28:  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   29:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   30:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
   31:  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
   32:  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
   33:  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
   34:  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   35:  */
   36: 
   37: /*
   38:  * Copyright (c) 1982 Jay Fenlason <hack@gnu.org>
   39:  * All rights reserved.
   40:  *
   41:  * Redistribution and use in source and binary forms, with or without
   42:  * modification, are permitted provided that the following conditions
   43:  * are met:
   44:  * 1. Redistributions of source code must retain the above copyright
   45:  *    notice, this list of conditions and the following disclaimer.
   46:  * 2. Redistributions in binary form must reproduce the above copyright
   47:  *    notice, this list of conditions and the following disclaimer in the
   48:  *    documentation and/or other materials provided with the distribution.
   49:  * 3. The name of the author may not be used to endorse or promote products
   50:  *    derived from this software without specific prior written permission.
   51:  *
   52:  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
   53:  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
   54:  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL
   55:  * THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
   56:  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
   57:  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
   58:  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
   59:  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
   60:  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
   61:  * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
   62:  */
   63: 
   64: #include <sys/cdefs.h>
   65: #ifndef lint
   66: __RCSID("$NetBSD: hack.rip.c,v 1.7 2003/04/02 18:36:39 jsm Exp $");
   67: #endif                          /* not lint */
   68: 
   69: #include "hack.h"
   70: #include "extern.h"
   71: 
   72: static const char    *riptop = "\
   73:                        ----------\n\
   74:                       /          \\\n\
   75:                      /    REST    \\\n\
   76:                     /      IN      \\\n\
   77:                    /     PEACE      \\\n\
   78:                   /                  \\";
   79: 
   80: static const char    *ripmid = "                  | %*s%*s |\n";
   81: 
   82: static const char    *ripbot = "\
   83:                  *|     *  *  *      | *\n\
   84:         _________)/\\\\_//(\\/(/\\)/\\//\\/|_)_______";
   85: 
   86: void
   87: outrip()
   88: {
   89:         char            buf[BUFSZ];
   90: 
   91:         cls();
   92:         curs(1, 8);
   93:         puts(riptop);
   94:         (void) strcpy(buf, plname);
   95:         buf[16] = 0;
   96:         center(6, buf);
   97:         (void) sprintf(buf, "%ld AU", u.ugold);
   98:         center(7, buf);
   99:         (void) sprintf(buf, "killed by%s",
  100:                        !strncmp(killer, "the ", 4) ? "" :
  101:                        !strcmp(killer, "starvation") ? "" :
  102:                        strchr(vowels, *killer) ? " an" : " a");
  103:         center(8, buf);
  104:         (void) strcpy(buf, killer);
  105:         {
  106:                 int             i1;
  107:                 if ((i1 = strlen(buf)) > 16) {
  108:                         int             i, i0;
  109:                         i0 = i1 = 0;
  110:                         for (i = 0; i <= 16; i++)
  111:                                 if (buf[i] == ' ')
  112:                                         i0 = i, i1 = i + 1;
  113:                         if (!i0)
  114:                                 i0 = i1 = 16;
  115:                         buf[i1 + 16] = 0;
  116:                         buf[i0] = 0;
  117:                 }
  118:                 center(9, buf);
  119:                 center(10, buf + i1);
  120:         }
  121:         (void) sprintf(buf, "%4d", getyear());
  122:         center(11, buf);
  123:         puts(ripbot);
  124:         getret();
  125: }
  126: 
  127: void
  128: center(line, text)
  129:         int             line __attribute__((__unused__));
  130:         char           *text;
  131: {
  132:         int             n = strlen(text) / 2;
  133:         printf(ripmid, 8 + n, text, 8 - n, "");
  134: }
Syntax (Markdown)