Difference between revisions of "Source:NetHack 3.6.0/src/sys.c"

From NetHackWiki
Jump to navigation Jump to search
(Created page with "__MIXEDSYNTAXHIGHLIGHT__ Below is the full text to '''sys.c''' from the source code of NetHack 3.6.0. To link to a particular line, write S...")
 
Line 3: Line 3:
  
 
{{NGPL}}
 
{{NGPL}}
  <span id="line1">1.   /* NetHack 3.6 sys.c $NHDT-Date: 1448241785 2015/11/23 01:23:05 $  $NHDT-Branch: master $:$NHDT-Revision: 1.35 $ */</span>
+
 
  <span id="line2">2.   /* Copyright (c) Kenneth Lorber, Kensington, Maryland, 2008. */</span>
+
== Top of file ==
  <span id="line3">3.   /* NetHack may be freely redistributed.  See license for details. */</span>
+
 
  <span id="line4">4.   </span>
+
  <span id="line1">1. /* NetHack 3.6 sys.c $NHDT-Date: 1448241785 2015/11/23 01:23:05 $  $NHDT-Branch: master $:$NHDT-Revision: 1.35 $ */</span>
  <span id="line5">5.   #include "hack.h"</span>
+
  <span id="line2">2. /* Copyright (c) Kenneth Lorber, Kensington, Maryland, 2008. */</span>
  <span id="line6">6.   </span>
+
  <span id="line3">3. /* NetHack may be freely redistributed.  See license for details. */</span>
  <span id="line7">7.   #ifndef SYSCF</span>
+
  <span id="line4">4. </span>
  <span id="line8">8.   /* !SYSCF configurations need '#define DEBUGFILES "foo.c bar.c"'</span>
+
  <span id="line5">5. #include "hack.h"</span>
  <span id="line9">9.     * to enable debugging feedback for source files foo.c and bar.c;</span>
+
  <span id="line6">6. </span>
  <span id="line10">10.   * to activate debugpline(), set an appropriate value and uncomment</span>
+
  <span id="line7">7. #ifndef SYSCF</span>
  <span id="line11">11.   */</span>
+
  <span id="line8">8. /* !SYSCF configurations need '#define DEBUGFILES "foo.c bar.c"'</span>
  <span id="line12">12.   /* # define DEBUGFILES "*" */</span>
+
  <span id="line9">9.  * to enable debugging feedback for source files foo.c and bar.c;</span>
  <span id="line13">13.   </span>
+
  <span id="line10">10.  * to activate debugpline(), set an appropriate value and uncomment</span>
  <span id="line14">14.   /* note: DEBUGFILES value here or in sysconf.DEBUGFILES can be overridden</span>
+
  <span id="line11">11.  */</span>
  <span id="line15">15.     at runtime by setting up a value for "DEBUGFILES" in the environment */</span>
+
  <span id="line12">12. /* # define DEBUGFILES "*" */</span>
  <span id="line16">16.   #endif</span>
+
  <span id="line13">13. </span>
  <span id="line17">17.   </span>
+
  <span id="line14">14. /* note: DEBUGFILES value here or in sysconf.DEBUGFILES can be overridden</span>
  <span id="line18">18.   struct sysopt sysopt;</span>
+
  <span id="line15">15.   at runtime by setting up a value for "DEBUGFILES" in the environment */</span>
  <span id="line19">19.   </span>
+
  <span id="line16">16. #endif</span>
  <span id="line20">20.   void</span>
+
  <span id="line17">17. </span>
  <span id="line21">21.   sys_early_init()</span>
+
  <span id="line18">18. struct sysopt sysopt;</span>
  <span id="line22">22.   {</span>
+
  <span id="line19">19. </span>
  <span id="line23">23.       sysopt.support = (char *) 0;</span>
+
  <span id="line20">20. void</span>
  <span id="line24">24.       sysopt.recover = (char *) 0;</span>
+
  <span id="line21">21. sys_early_init()</span>
  <span id="line25">25.   #ifdef SYSCF</span>
+
  <span id="line22">22. {</span>
  <span id="line26">26.       sysopt.wizards = (char *) 0;</span>
+
  <span id="line23">23.     sysopt.support = (char *) 0;</span>
  <span id="line27">27.   #else</span>
+
  <span id="line24">24.     sysopt.recover = (char *) 0;</span>
  <span id="line28">28.       sysopt.wizards = dupstr(WIZARD_NAME);</span>
+
  <span id="line25">25. #ifdef SYSCF</span>
  <span id="line29">29.   #endif</span>
+
  <span id="line26">26.     sysopt.wizards = (char *) 0;</span>
  <span id="line30">30.   #if defined(SYSCF) || !defined(DEBUGFILES)</span>
+
  <span id="line27">27. #else</span>
  <span id="line31">31.       sysopt.debugfiles = (char *) 0;</span>
+
  <span id="line28">28.     sysopt.wizards = dupstr(WIZARD_NAME);</span>
  <span id="line32">32.   #else</span>
+
  <span id="line29">29. #endif</span>
  <span id="line33">33.       sysopt.debugfiles = dupstr(DEBUGFILES);</span>
+
  <span id="line30">30. #if defined(SYSCF) || !defined(DEBUGFILES)</span>
  <span id="line34">34.   #endif</span>
+
  <span id="line31">31.     sysopt.debugfiles = (char *) 0;</span>
  <span id="line35">35.       sysopt.env_dbgfl = 0; /* haven't checked getenv("DEBUGFILES") yet */</span>
+
  <span id="line32">32. #else</span>
  <span id="line36">36.       sysopt.shellers = (char *) 0;</span>
+
  <span id="line33">33.     sysopt.debugfiles = dupstr(DEBUGFILES);</span>
  <span id="line37">37.       sysopt.explorers = (char *) 0;</span>
+
  <span id="line34">34. #endif</span>
  <span id="line38">38.       sysopt.maxplayers = 0; /* XXX eventually replace MAX_NR_OF_PLAYERS */</span>
+
  <span id="line35">35.     sysopt.env_dbgfl = 0; /* haven't checked getenv("DEBUGFILES") yet */</span>
  <span id="line39">39.   </span>
+
  <span id="line36">36.     sysopt.shellers = (char *) 0;</span>
  <span id="line40">40.       /* record file */</span>
+
  <span id="line37">37.     sysopt.explorers = (char *) 0;</span>
  <span id="line41">41.       sysopt.persmax = PERSMAX;</span>
+
  <span id="line38">38.     sysopt.maxplayers = 0; /* XXX eventually replace MAX_NR_OF_PLAYERS */</span>
  <span id="line42">42.       sysopt.entrymax = ENTRYMAX;</span>
+
  <span id="line39">39. </span>
  <span id="line43">43.       sysopt.pointsmin = POINTSMIN;</span>
+
  <span id="line40">40.     /* record file */</span>
  <span id="line44">44.       sysopt.pers_is_uid = PERS_IS_UID;</span>
+
  <span id="line41">41.     sysopt.persmax = PERSMAX;</span>
  <span id="line45">45.       sysopt.tt_oname_maxrank = 10;</span>
+
  <span id="line42">42.     sysopt.entrymax = ENTRYMAX;</span>
  <span id="line46">46.   </span>
+
  <span id="line43">43.     sysopt.pointsmin = POINTSMIN;</span>
  <span id="line47">47.       /* sanity checks */</span>
+
  <span id="line44">44.     sysopt.pers_is_uid = PERS_IS_UID;</span>
  <span id="line48">48.       if (PERSMAX < 1)</span>
+
  <span id="line45">45.     sysopt.tt_oname_maxrank = 10;</span>
  <span id="line49">49.           sysopt.persmax = 1;</span>
+
  <span id="line46">46. </span>
  <span id="line50">50.       if (ENTRYMAX < 10)</span>
+
  <span id="line47">47.     /* sanity checks */</span>
  <span id="line51">51.           sysopt.entrymax = 10;</span>
+
  <span id="line48">48.     if (PERSMAX < 1)</span>
  <span id="line52">52.       if (POINTSMIN < 1)</span>
+
  <span id="line49">49.         sysopt.persmax = 1;</span>
  <span id="line53">53.           sysopt.pointsmin = 1;</span>
+
  <span id="line50">50.     if (ENTRYMAX < 10)</span>
  <span id="line54">54.       if (PERS_IS_UID != 0 && PERS_IS_UID != 1)</span>
+
  <span id="line51">51.         sysopt.entrymax = 10;</span>
  <span id="line55">55.           panic("config error: PERS_IS_UID must be either 0 or 1");</span>
+
  <span id="line52">52.     if (POINTSMIN < 1)</span>
  <span id="line56">56.   </span>
+
  <span id="line53">53.         sysopt.pointsmin = 1;</span>
  <span id="line57">57.   #ifdef PANICTRACE</span>
+
  <span id="line54">54.     if (PERS_IS_UID != 0 && PERS_IS_UID != 1)</span>
  <span id="line58">58.       /* panic options */</span>
+
  <span id="line55">55.         panic("config error: PERS_IS_UID must be either 0 or 1");</span>
  <span id="line59">59.       sysopt.gdbpath = dupstr(GDBPATH);</span>
+
  <span id="line56">56. </span>
  <span id="line60">60.       sysopt.greppath = dupstr(GREPPATH);</span>
+
  <span id="line57">57. #ifdef PANICTRACE</span>
  <span id="line61">61.   #ifdef BETA</span>
+
  <span id="line58">58.     /* panic options */</span>
  <span id="line62">62.       sysopt.panictrace_gdb = 1;</span>
+
  <span id="line59">59.     sysopt.gdbpath = dupstr(GDBPATH);</span>
  <span id="line63">63.   #ifdef PANICTRACE_LIBC</span>
+
  <span id="line60">60.     sysopt.greppath = dupstr(GREPPATH);</span>
  <span id="line64">64.       sysopt.panictrace_libc = 2;</span>
+
  <span id="line61">61. #ifdef BETA</span>
  <span id="line65">65.   #endif</span>
+
  <span id="line62">62.     sysopt.panictrace_gdb = 1;</span>
  <span id="line66">66.   #else</span>
+
  <span id="line63">63. #ifdef PANICTRACE_LIBC</span>
  <span id="line67">67.       sysopt.panictrace_gdb = 0;</span>
+
  <span id="line64">64.     sysopt.panictrace_libc = 2;</span>
  <span id="line68">68.   #ifdef PANICTRACE_LIBC</span>
+
  <span id="line65">65. #endif</span>
  <span id="line69">69.       sysopt.panictrace_libc = 0;</span>
+
  <span id="line66">66. #else</span>
  <span id="line70">70.   #endif</span>
+
  <span id="line67">67.     sysopt.panictrace_gdb = 0;</span>
  <span id="line71">71.   #endif</span>
+
  <span id="line68">68. #ifdef PANICTRACE_LIBC</span>
  <span id="line72">72.   #endif</span>
+
  <span id="line69">69.     sysopt.panictrace_libc = 0;</span>
  <span id="line73">73.   </span>
+
  <span id="line70">70. #endif</span>
  <span id="line74">74.       sysopt.check_save_uid = 1;</span>
+
  <span id="line71">71. #endif</span>
  <span id="line75">75.       sysopt.seduce = 1; /* if it's compiled in, default to on */</span>
+
  <span id="line72">72. #endif</span>
  <span id="line76">76.       sysopt_seduce_set(sysopt.seduce);</span>
+
  <span id="line73">73. </span>
  <span id="line77">77.       return;</span>
+
  <span id="line74">74.     sysopt.check_save_uid = 1;</span>
  <span id="line78">78.   }</span>
+
  <span id="line75">75.     sysopt.seduce = 1; /* if it's compiled in, default to on */</span>
  <span id="line79">79.   </span>
+
  <span id="line76">76.     sysopt_seduce_set(sysopt.seduce);</span>
  <span id="line80">80.   void</span>
+
  <span id="line77">77.     return;</span>
  <span id="line81">81.   sysopt_release()</span>
+
  <span id="line78">78. }</span>
  <span id="line82">82.   {</span>
+
  <span id="line79">79. </span>
  <span id="line83">83.       if (sysopt.support)</span>
+
  <span id="line80">80. void</span>
  <span id="line84">84.           free((genericptr_t) sysopt.support), sysopt.support = (char *) 0;</span>
+
  <span id="line81">81. sysopt_release()</span>
  <span id="line85">85.       if (sysopt.recover)</span>
+
  <span id="line82">82. {</span>
  <span id="line86">86.           free((genericptr_t) sysopt.recover), sysopt.recover = (char *) 0;</span>
+
  <span id="line83">83.     if (sysopt.support)</span>
  <span id="line87">87.       if (sysopt.wizards)</span>
+
  <span id="line84">84.         free((genericptr_t) sysopt.support), sysopt.support = (char *) 0;</span>
  <span id="line88">88.           free((genericptr_t) sysopt.wizards), sysopt.wizards = (char *) 0;</span>
+
  <span id="line85">85.     if (sysopt.recover)</span>
  <span id="line89">89.       if (sysopt.explorers)</span>
+
  <span id="line86">86.         free((genericptr_t) sysopt.recover), sysopt.recover = (char *) 0;</span>
  <span id="line90">90.           free((genericptr_t) sysopt.explorers), sysopt.explorers = (char *) 0;</span>
+
  <span id="line87">87.     if (sysopt.wizards)</span>
  <span id="line91">91.       if (sysopt.shellers)</span>
+
  <span id="line88">88.         free((genericptr_t) sysopt.wizards), sysopt.wizards = (char *) 0;</span>
  <span id="line92">92.           free((genericptr_t) sysopt.shellers), sysopt.shellers = (char *) 0;</span>
+
  <span id="line89">89.     if (sysopt.explorers)</span>
  <span id="line93">93.       if (sysopt.debugfiles)</span>
+
  <span id="line90">90.         free((genericptr_t) sysopt.explorers), sysopt.explorers = (char *) 0;</span>
  <span id="line94">94.           free((genericptr_t) sysopt.debugfiles),</span>
+
  <span id="line91">91.     if (sysopt.shellers)</span>
  <span id="line95">95.           sysopt.debugfiles = (char *) 0;</span>
+
  <span id="line92">92.         free((genericptr_t) sysopt.shellers), sysopt.shellers = (char *) 0;</span>
  <span id="line96">96.   #ifdef PANICTRACE</span>
+
  <span id="line93">93.     if (sysopt.debugfiles)</span>
  <span id="line97">97.       if (sysopt.gdbpath)</span>
+
  <span id="line94">94.         free((genericptr_t) sysopt.debugfiles),</span>
  <span id="line98">98.           free((genericptr_t) sysopt.gdbpath), sysopt.gdbpath = (char *) 0;</span>
+
  <span id="line95">95.         sysopt.debugfiles = (char *) 0;</span>
  <span id="line99">99.       if (sysopt.greppath)</span>
+
  <span id="line96">96. #ifdef PANICTRACE</span>
  <span id="line100">100.         free((genericptr_t) sysopt.greppath), sysopt.greppath = (char *) 0;</span>
+
  <span id="line97">97.     if (sysopt.gdbpath)</span>
  <span id="line101">101. #endif</span>
+
  <span id="line98">98.         free((genericptr_t) sysopt.gdbpath), sysopt.gdbpath = (char *) 0;</span>
  <span id="line102">102.     /* this one's last because it might be used in panic feedback, although</span>
+
  <span id="line99">99.     if (sysopt.greppath)</span>
  <span id="line103">103.         none of the preceding ones are likely to trigger a controlled panic */</span>
+
  <span id="line100">100.         free((genericptr_t) sysopt.greppath), sysopt.greppath = (char *) 0;</span>
  <span id="line104">104.     if (sysopt.fmtd_wizard_list)</span>
+
  <span id="line101">101. #endif</span>
  <span id="line105">105.         free((genericptr_t) sysopt.fmtd_wizard_list),</span>
+
  <span id="line102">102.     /* this one's last because it might be used in panic feedback, although</span>
  <span id="line106">106.         sysopt.fmtd_wizard_list = (char *) 0;</span>
+
  <span id="line103">103.       none of the preceding ones are likely to trigger a controlled panic */</span>
  <span id="line107">107.     return;</span>
+
  <span id="line104">104.     if (sysopt.fmtd_wizard_list)</span>
  <span id="line108">108. }</span>
+
  <span id="line105">105.         free((genericptr_t) sysopt.fmtd_wizard_list),</span>
  <span id="line109">109. </span>
+
  <span id="line106">106.         sysopt.fmtd_wizard_list = (char *) 0;</span>
  <span id="line110">110. extern struct attack sa_yes[NATTK];</span>
+
  <span id="line107">107.     return;</span>
  <span id="line111">111. extern struct attack sa_no[NATTK];</span>
+
  <span id="line108">108. }</span>
  <span id="line112">112. </span>
+
  <span id="line109">109. </span>
  <span id="line113">113. void</span>
+
  <span id="line110">110. extern struct attack sa_yes[NATTK];</span>
  <span id="line114">114. sysopt_seduce_set(val)</span>
+
  <span id="line111">111. extern struct attack sa_no[NATTK];</span>
  <span id="line115">115. int val;</span>
+
  <span id="line112">112. </span>
  <span id="line116">116. {</span>
+
  <span id="line113">113. void</span>
  <span id="line117">117.     struct attack *setval = val ? sa_yes : sa_no;</span>
+
  <span id="line114">114. sysopt_seduce_set(val)</span>
  <span id="line118">118.     int x;</span>
+
  <span id="line115">115. int val;</span>
  <span id="line119">119. </span>
+
  <span id="line116">116. {</span>
  <span id="line120">120.     for (x = 0; x < NATTK; x++) {</span>
+
  <span id="line117">117.     struct attack *setval = val ? sa_yes : sa_no;</span>
  <span id="line121">121.         mons[PM_INCUBUS].mattk[x] = setval[x];</span>
+
  <span id="line118">118.     int x;</span>
  <span id="line122">122.         mons[PM_SUCCUBUS].mattk[x] = setval[x];</span>
+
  <span id="line119">119. </span>
  <span id="line123">123.     }</span>
+
  <span id="line120">120.     for (x = 0; x < NATTK; x++) {</span>
  <span id="line124">124.     return;</span>
+
  <span id="line121">121.         mons[PM_INCUBUS].mattk[x] = setval[x];</span>
  <span id="line125">125. }</span>
+
  <span id="line122">122.         mons[PM_SUCCUBUS].mattk[x] = setval[x];</span>
  <span id="line126">126. </span>
+
  <span id="line123">123.     }</span>
  <span id="line127">127. /*sys.c*/</span>
+
  <span id="line124">124.     return;</span>
 +
  <span id="line125">125. }</span>
 +
  <span id="line126">126. </span>
 +
  <span id="line127">127. /*sys.c*/</span>
 
[[Category:NetHack 3.6.0 source code|src/sys.c]]
 
[[Category:NetHack 3.6.0 source code|src/sys.c]]

Revision as of 02:11, 17 December 2015

Below is the full text to sys.c from the source code of NetHack 3.6.0. To link to a particular line, write [[Source:NetHack 3.6.0/src/sys.c#line123]], for example.

The NetHack General Public License applies to screenshots, source code and other content from NetHack.

This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.

Top of file

 /* NetHack 3.6	sys.c	$NHDT-Date: 1448241785 2015/11/23 01:23:05 $  $NHDT-Branch: master $:$NHDT-Revision: 1.35 $ */
 /* Copyright (c) Kenneth Lorber, Kensington, Maryland, 2008. */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #include "hack.h"
 
 #ifndef SYSCF
 /* !SYSCF configurations need '#define DEBUGFILES "foo.c bar.c"'
  * to enable debugging feedback for source files foo.c and bar.c;
  * to activate debugpline(), set an appropriate value and uncomment
  */
 /* # define DEBUGFILES "*" */
 
 /* note: DEBUGFILES value here or in sysconf.DEBUGFILES can be overridden
    at runtime by setting up a value for "DEBUGFILES" in the environment */
 #endif
 
 struct sysopt sysopt;
 
 void
 sys_early_init()
 {
     sysopt.support = (char *) 0;
     sysopt.recover = (char *) 0;
 #ifdef SYSCF
     sysopt.wizards = (char *) 0;
 #else
     sysopt.wizards = dupstr(WIZARD_NAME);
 #endif
 #if defined(SYSCF) || !defined(DEBUGFILES)
     sysopt.debugfiles = (char *) 0;
 #else
     sysopt.debugfiles = dupstr(DEBUGFILES);
 #endif
     sysopt.env_dbgfl = 0; /* haven't checked getenv("DEBUGFILES") yet */
     sysopt.shellers = (char *) 0;
     sysopt.explorers = (char *) 0;
     sysopt.maxplayers = 0; /* XXX eventually replace MAX_NR_OF_PLAYERS */
 
     /* record file */
     sysopt.persmax = PERSMAX;
     sysopt.entrymax = ENTRYMAX;
     sysopt.pointsmin = POINTSMIN;
     sysopt.pers_is_uid = PERS_IS_UID;
     sysopt.tt_oname_maxrank = 10;
 
     /* sanity checks */
     if (PERSMAX < 1)
         sysopt.persmax = 1;
     if (ENTRYMAX < 10)
         sysopt.entrymax = 10;
     if (POINTSMIN < 1)
         sysopt.pointsmin = 1;
     if (PERS_IS_UID != 0 && PERS_IS_UID != 1)
         panic("config error: PERS_IS_UID must be either 0 or 1");
 
 #ifdef PANICTRACE
     /* panic options */
     sysopt.gdbpath = dupstr(GDBPATH);
     sysopt.greppath = dupstr(GREPPATH);
 #ifdef BETA
     sysopt.panictrace_gdb = 1;
 #ifdef PANICTRACE_LIBC
     sysopt.panictrace_libc = 2;
 #endif
 #else
     sysopt.panictrace_gdb = 0;
 #ifdef PANICTRACE_LIBC
     sysopt.panictrace_libc = 0;
 #endif
 #endif
 #endif
 
     sysopt.check_save_uid = 1;
     sysopt.seduce = 1; /* if it's compiled in, default to on */
     sysopt_seduce_set(sysopt.seduce);
     return;
 }
 
 void
 sysopt_release()
 {
     if (sysopt.support)
         free((genericptr_t) sysopt.support), sysopt.support = (char *) 0;
     if (sysopt.recover)
         free((genericptr_t) sysopt.recover), sysopt.recover = (char *) 0;
     if (sysopt.wizards)
         free((genericptr_t) sysopt.wizards), sysopt.wizards = (char *) 0;
     if (sysopt.explorers)
         free((genericptr_t) sysopt.explorers), sysopt.explorers = (char *) 0;
     if (sysopt.shellers)
         free((genericptr_t) sysopt.shellers), sysopt.shellers = (char *) 0;
     if (sysopt.debugfiles)
         free((genericptr_t) sysopt.debugfiles),
         sysopt.debugfiles = (char *) 0;
 #ifdef PANICTRACE
     if (sysopt.gdbpath)
         free((genericptr_t) sysopt.gdbpath), sysopt.gdbpath = (char *) 0;
     if (sysopt.greppath)
         free((genericptr_t) sysopt.greppath), sysopt.greppath = (char *) 0;
 #endif
     /* this one's last because it might be used in panic feedback, although
        none of the preceding ones are likely to trigger a controlled panic */
     if (sysopt.fmtd_wizard_list)
         free((genericptr_t) sysopt.fmtd_wizard_list),
         sysopt.fmtd_wizard_list = (char *) 0;
     return;
 }
 
 extern struct attack sa_yes[NATTK];
 extern struct attack sa_no[NATTK];
 
 void
 sysopt_seduce_set(val)
 int val;
 {
     struct attack *setval = val ? sa_yes : sa_no;
     int x;
 
     for (x = 0; x < NATTK; x++) {
         mons[PM_INCUBUS].mattk[x] = setval[x];
         mons[PM_SUCCUBUS].mattk[x] = setval[x];
     }
     return;
 }
 
 /*sys.c*/