⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 configure.c

📁 LINUX1.0内核源代码,学习LINUX编程的一定要看。
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * sound/configure.c	- Configuration program for the Linux Sound Driver *  * Copyright by Hannu Savolainen 1993 *  * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. 2. * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. *  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. *  */#include <stdio.h>#define B(x)	(1 << (x))/* * Option numbers */#define OPT_PAS		0#define OPT_SB		1#define OPT_ADLIB	2#define OPT_LAST_MUTUAL	2#define OPT_GUS		3#define OPT_MPU401	4#define OPT_HIGHLEVEL   5#define OPT_SBPRO	5#define OPT_SB16	6#define OPT_AUDIO	7#define OPT_MIDI_AUTO	8#define OPT_MIDI	9#define OPT_YM3812_AUTO	10	/* Select this automaticly if user selects				 * MIDI or AdLib driver */#define OPT_YM3812	11	/* Select this if the previous one was not				 * selected */#define OPT_SEQUENCER	12#define OPT_CHIP_MIDI   13	/* New support added at UW - Milwauklee UW -				 * Milwauklee */#define OPT_LAST	12#define ANY_DEVS (B(OPT_AUDIO)|B(OPT_MIDI)|B(OPT_SEQUENCER)|B(OPT_GUS)|B(OPT_MPU401))typedef struct  {    unsigned long   conditions;    unsigned long   exclusive_options;    char            macro[20];    int             verify;    int             alias;    int		    default_answ;  }hw_entry;/* * The rule table for the driver options. The first field defines a set of * options which must be selected before this entry can be selected. The * second field is a set of options which are not allowed with this one. If * the fourth field is zero, the option is selected without asking * confirmation from the user. *  * With this version of the rule table it is possible to select just one type of * hardware. *  * NOTE!	Keep the following table and the questions array in sync with the * option numbering! */hw_entry        hw_table[] ={/* 0 */  {0, 0, "PAS", 1, 0, 0},  {0, 0, "SB", 1, 0, 0},  {0, B (OPT_PAS) | B (OPT_SB), "ADLIB", 1, 0, 0},/* 3 */  {0, 0, "GUS", 1, 0, 0},  {0, 0, "MPU401", 1, 0, 0},  {B (OPT_SB), B (OPT_PAS), "SBPRO", 1, 0, 1},  {B (OPT_SB) | B (OPT_SBPRO), B (OPT_PAS), "SB16", 1, 0, 1},  {B (OPT_SB) | B (OPT_PAS) | B (OPT_GUS), 0, "AUDIO", 1, 0, 1},  {B (OPT_MPU401), 0, "MIDI_AUTO", 0, OPT_MIDI, 0},  {B (OPT_SB) | B (OPT_PAS) | B (OPT_MPU401) | B (OPT_GUS), 0, "MIDI", 1, 0, 1},  {B (OPT_ADLIB), 0, "YM3812_AUTO", 0, OPT_YM3812, 0},  {B (OPT_SB) | B (OPT_PAS) | B (OPT_ADLIB), B (OPT_YM3812_AUTO), "YM3812", 1, 0, 1},/* 10 */  {B (OPT_MIDI) | B (OPT_YM3812) | B (OPT_YM3812_AUTO) | B (OPT_GUS), 0, "SEQUENCER", 0, 0, 1},  {0, 0, "CHIP_MIDI", 1, 0, 0}};char           *questions[] ={  "ProAudioSpectrum 16 support",  "SoundBlaster support",  "AdLib support",  "Gravis Ultrasound support",  "MPU-401 support (NOT for SB16)",  "SoundBlaster Pro support",  "SoundBlaster 16 support",  "digitized voice support",  "This should not be asked",  "MIDI interface support",  "This should not be asked",  "FM synthesizer (YM3812/OPL-3) support",  "/dev/sequencer support",  "MIDI on CHIP support"};unsigned long   selected_options = 0;int sb_dma = 0;intcan_select_option (int nr){  switch (nr)    {    case 0:      fprintf (stderr, "The SoundBlaster, AdLib and ProAudioSpectrum\n"	       "cards cannot be installed at the same time\n");      fprintf (stderr, "\nSelect at most one of them:\n");      fprintf (stderr, "	- ProAudioSpectrum 16\n");      fprintf (stderr, "	- SoundBlaster / SB Pro\n");      fprintf (stderr, "          (Could be selected with PAS16 also\n"	       "	  since there is a SB emulation on it)\n");      fprintf (stderr, "	- AdLib\n");      fprintf (stderr, "\nDon't enable SoundBlaster if you have GUS at 0x220!\n\n");      break;    case OPT_LAST_MUTUAL + 1:      fprintf (stderr, "\nThe following cards should work with any other cards.\n"	       "CAUTION! Don't enable MPU-401 if you don't have it.\n");      break;    case OPT_HIGHLEVEL:      fprintf (stderr, "\nSelect one or more of the following options\n");      break;    }  if (hw_table[nr].conditions)    if (!(hw_table[nr].conditions & selected_options))      return 0;  if (hw_table[nr].exclusive_options)    if (hw_table[nr].exclusive_options & selected_options)      return 0;  return 1;}intthink_positively (int def_answ){  char            answ[512];  int             len;  if ((len = read (0, &answ, sizeof (answ))) < 1)    {      fprintf (stderr, "\n\nERROR! Cannot read stdin\n");      perror ("stdin");      printf ("#undef CONFIGURE_SOUNDCARD\n");      printf ("#undef KERNEL_SOUNDCARD\n");      exit (-1);    }  if (len < 2)			/* There is an additional LF at the end */    return def_answ;  answ[len - 1] = 0;  if (!strcmp (answ, "y") || !strcmp (answ, "Y"))    return 1;  return 0;}intask_value (char *format, int default_answer){  char            answ[512];  int             len, num;play_it_again_Sam:  if ((len = read (0, &answ, sizeof (answ))) < 1)    {      fprintf (stderr, "\n\nERROR! Cannot read stdin\n");      perror ("stdin");      printf ("#undef CONFIGURE_SOUNDCARD\n");      printf ("#undef KERNEL_SOUNDCARD\n");      exit (-1);    }  if (len < 2)			/* There is an additional LF at the end */    return default_answer;  answ[len - 1] = 0;  if (sscanf (answ, format, &num) != 1)    {      fprintf (stderr, "Illegal format. Try again: ");      goto play_it_again_Sam;    }  return num;}intmain (int argc, char *argv[]){  int             i, num, def_size, full_driver = 1;  char            answ[10];  printf ("/*\tGenerated by configure. Don't edit!!!!\t*/\n\n");  fprintf (stderr, "\nConfiguring the sound support\n\n");  fprintf (stderr, "Do you want to include full version of the sound driver (n/y) ? ");  if (think_positively (0))    {      selected_options = 0xffffffff & ~B (OPT_MPU401);      fprintf (stderr, "Note! MPU-401 driver was not enabled\n");      full_driver = 1;    }  else    {      fprintf (stderr, "Do you want to DISABLE the Sound Driver (n/y) ?");      if (think_positively (0))	{	  printf ("#undef CONFIGURE_SOUNDCARD\n");	  printf ("#undef KERNEL_SOUNDCARD\n");	  exit (0);	}      /* Partial driver */      full_driver = 0;      for (i = 0; i <= OPT_LAST; i++)	if (can_select_option (i))	  {	    if (!(selected_options & B (i)))	/* Not selected yet */	      if (!hw_table[i].verify)		{		  if (hw_table[i].alias)		    selected_options |= B (hw_table[i].alias);		  else		    selected_options |= B (i);		}	      else		{		  int def_answ = hw_table[i].default_answ;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -