PROMPT 1
DEFAULT vmlinuz
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 rw
-LABEL nopcmcia
+LABEL unattended
+ KERNEL vmlinuz
+ APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 rw unattended
+LABEL nopcmcia
KERNEL vmlinuz
APPEND ide=nodma initrd=instroot.gz root=/dev/ram0 ramdisk_size=16384 rw nopcmcia
LABEL nousb
--- /dev/null
+DOMAINNAME=localdomain
+HOSTNAME=ipfire
+KEYMAP=/usr/share/kbd/keymaps/i386/qwerty/de.map.gz
+LANGUAGE=de
+TIMEZONE=/usr/share/zoneinfo/posix/Europe/Berlin
+GREEN_ADDRESS=192.168.0.15
+GREEN_NETMASK=255.255.255.0
+GREEN_NETADDRESS=192.168.0.0
+GREEN_BROADCAST=192.168.0.255
+ROOT_PASSWORD=ipfire
+ADMIN_PASSWORD=ipfire
+SERIAL_CONSOLE=yes
+REVERSE_NICS=yes
+MEGABRIDGE=yes
"Geben Sie die URL für ipcop-<version>.tgz und die images/scsidrv-<version>.img-Dateien ein. WARNUNG: DNS ist nicht verfügbar! Sie sollten jetzt nur etwas im Format 'http://X.X.X.X/<verzeichnis>' eingeben. ",
/* TR_ERROR */
"Fehler",
+/* TR_ERROR_PROBING_CDROM */
+"Kein CDROM-Laufwerk gefunden.",
/* TR_ERROR_WRITING_CONFIG */
"Fehler beim Schreiben der Konfigurationsinformationen.",
/* TR_EURO_EDSS1 */
"Enter the URL path to the ipcop-<version>.tgz and images/scsidrv-<version>.img files. WARNING: DNS not available! This should now just be http://X.X.X.X/<directory>",
/* TR_ERROR */
"Error",
+/* TR_ERROR_PROBING_CDROM */
+"No CDROM drive found.",
/* TR_ERROR_WRITING_CONFIG */
"Error writing configuration information.",
/* TR_EURO_EDSS1 */
# Compress root filesystem
# Reason for this tar+untar+tar is removing of entries listed two or more in src/ROOTFILES
- mkdir -p /install/cdrom/{doc,dosutils,images}
+ mkdir -p /install/cdrom/{doc,dosutils}
find $(DIR_SRC)/config/rootfiles/common -maxdepth 1 -type f | xargs cat >> /tmp/ROOTFILES
find $(DIR_SRC)/config/rootfiles/ver_$(IPFVER) -maxdepth 1 -type f | xargs cat >> /tmp/ROOTFILES
tar -c -C / --files-from=/tmp/ROOTFILES \
# Other files
sed 's/VERSION/$(VERSION)/' $(DIR_SRC)/config/cdrom/README.txt > /install/cdrom/README.txt
cp $(DIR_SRC)/doc/COPYING /install/cdrom/
- cp /install/images/*.img /install/cdrom/images
cp $(DIR_SRC)/doc/{ChangeLog,packages-list.txt} /install/cdrom/doc
cp $(DIR_DL)/rawrite.exe /install/cdrom/dosutils
unzip -j -L $(DIR_DL)/rawwritewin*.zip -x "*.txt" -d /install/cdrom/dosutils
+ # Configuration
+ mkdir -p /install/cdrom/boot
+ cp $(DIR_SRC)/config/kernel/unattended.conf /install/cdrom/boot/unattended.conf
+
# Make the ISO
mkdir -p /install/cdrom/boot/isolinux; \
dd if=/dev/zero bs=1k count=2 > /install/cdrom/boot/isolinux/boot.catalog; \
+++ /dev/null
-###############################################################################
-# This file is part of the IPCop Firewall. #
-# #
-# IPCop is free software; you can redistribute it and/or modify #
-# it under the terms of the GNU General Public License as published by #
-# the Free Software Foundation; either version 2 of the License, or #
-# (at your option) any later version. #
-# #
-# IPCop is distributed in the hope that it will be useful, #
-# but WITHOUT ANY WARRANTY; without even the implied warranty of #
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
-# GNU General Public License for more details. #
-# #
-# You should have received a copy of the GNU General Public License #
-# along with IPCop; if not, write to the Free Software #
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA #
-# #
-# Makefiles are based on LFSMake, which is #
-# Copyright (C) 2002 Rod Roard <rod@sunsetsystems.com> #
-# #
-###############################################################################
-
-###############################################################################
-# Definitions
-###############################################################################
-
-include Config
-
-VER = ipfire
-
-THISAPP = hwinfo
-DIR_APP = $(DIR_SRC)/$(THISAPP)
-TARGET = $(DIR_INFO)/$(THISAPP)
-
-
-###############################################################################
-# Top-level Rules
-###############################################################################
-
-install : $(TARGET)
-
-check :
-
-download :
-
-md5 :
-
-###############################################################################
-# Installation Details
-###############################################################################
-
-$(TARGET) :
- @$(PREBUILD)
- @rm -rf $(DIR_APP) && mkdir $(DIR_APP) && cp -R $(DIR_SRC)/src/hwinfo/* $(DIR_APP)
- cd $(DIR_APP) && make tinystatic
- cd $(DIR_APP) && DESTDIR="/install/initrd" make tinystaticinstall
- @rm -rf $(DIR_APP)
- @$(POSTBUILD)
ipfiremake uClibc
installmake busybox
installmake udev
- installmake sysvinit
+ installmake slang
+ installmake newt
installmake gettext
- installmake e2fsprogs
+ installmake kbd
+ installmake popt
+ installmake kudzu
+ installmake sysvinit
installmake misc-progs
+ installmake e2fsprogs
+ installmake reiserfsprogs
installmake sysfsutils
-# installmake hwinfo
- installmake slang
installmake util-linux
- installmake reiserfsprogs
- installmake newt
installmake pciutils
installmake pcmciautils
- installmake kbd
- installmake popt
- installmake kudzu
installmake installer
- installmake scsi.img
- installmake driver.img
+ installmake scsi.img # this is to be deleted
+ installmake driver.img # this is to be deleted
installmake initrd
- installmake boot.img
-# ipfiremake as86
-# ipfiremake mbr
+ installmake boot.img # this is to be deleted
+# ipfiremake as86 # this is to be deleted
+# ipfiremake mbr # this is to be deleted
}
buildpackages() {
beautify message DONE
# Create images for install
- ipfiremake pxe
ipfiremake cdrom
+ ipfiremake pxe
cp $LFS/install/images/{*.iso,*.tgz} $BASEDIR >> $LOGFILE 2>&1
# ipfirepackages
watch)
watch_screen
;;
+pxe)
+ case "$2" in
+ start)
+ start_tftpd
+ ;;
+ stop)
+ stop_tftpd
+ ;;
+ reload)
+ reload_tftpd
+ ;;
+ esac
+ exit 0
+ ;;
"")
clear
svn info
+++ /dev/null
-----------------------------------------------------------------------
-
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 675 Mass Ave, Cambridge, MA 02139, USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-\f
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-\f
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) 19yy <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) 19yy name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
+++ /dev/null
-22/3/2005: v10.16
- - updated X11 data (#74130)
-
-21/3/2005: v10.15
- - mls: faster hwscand
-
-21/3/2005: v10.14
- - updated X11 data (#74022)
-
-19/3/2005: v10.13
- - fix wrong entry for Fritz!Card DSL SL USB and
- make ppp mode detection safer (#71995)
- - adjusted ltmodem info (#71979)
-
-18/3/2005: v10.12
- - updated nongpl info
- - reverting slamr patch (#72301)
- - pcmcia info updated (#73057)
- - pci dev names updated
- - read /proc/modules less often
- - updated X11 data
- - aic7xxx/aic79xx driver info update
- - fix Fritz!Box Fon entry in database
-
-17/3/2005: v10.11
- - another notebook (#67412)
- - do wlan detection for --netcard (#73077)
- - remove Eicon cards from 64 bit archs, the driver does not support
- 64 bit yet (#55722)
-
-16/3/2005: v10.10
- - updated notebook display data
- - fix udev db reading
- - updated X11 data
- - ltmodem device id update
- - no check for gfx card changes (#72907)
-
-14/3/2005: v10.9
- - hardware detection for ISDN PCMCIA cards (#71208)
- - updated ISDN data
- - updated X11 data
- - better network type detection (#70991, #71231, #67325)
- - load some acpi modules on hp notebook (#72146)
- - fixed isapnp sound card detection (#67303)
- - slamr: ttySL0 -> ttyLT0 (#72301)
-
-7/3/2005: v10.8
- - updated X11 data
-
-4/3/2005: v10.7
- - s390: made ccwgroup walking more robust
- - fixed bios base mem detection
- - allow device class in 'hwinfo --db' request
- - updated X11 data
-
-28/2/2005: v10.6
- - jg: improved wlan patch (no dependency on libiw)
-
-28/2/2005: v10.5
- - fixed model name for some SGI hardware (#63973)
- - fix Fritz!Card DSL SL USB ID (#66674)
- - better heuristics to assign BIOS driver numbers (#66669)
- - removed ahci vs. ata_piix hack (#65218)
-
-25/2/2005: v10.4
- - report pci class 0x403 as audio devices (#66466)
- - load ahci *and* ata_piix (#65218)
- - symlink /dev/fb might be missing; trying fb0, too (#66501)
- - reorder modules.pcimap entries so that more specific matches are
- considered first (#66594)
- - ensure nvida network cards are network cards (#65852)
- - updated X11 data
-
-23/2/2005: v10.3
- - reworked pcmcia code to give cardbus devices sysfs ids
-
-21/2/2005: v10.2
- - jg: added wlan feature detection
-
-17/2/2005: v10.1
- - notebook lcd data update
- - build shared tiny lib
-
-15/2/2005: v10.0
- - libhd interface changes: geometry values
- - prepare for wlan feature detection
- - x11 db update
- - better disk geometry handling
-
-8/2/2005: v9.36
- - added '--kernel-version' option
-
-31/1/2004: v9.35
- - updated X11 data
-
-14/12/2004: v9.34
- - fixed access to undefined memory (#39238)
- - fix segfault when using 'x11=foo' boot option (#46367)
- - add additional check to catch broken BIOSes (#48665)
- - abort BIOS code execution if it takes too long (#48665)
- - find usb serial lines
-
-2/12/2004: v9.33
- - s390: identify new CU types 2107, 1750 as DASD
- - fixed some dvb entries (#47057)
- - s390: added new prog_if ID pif_dasd_fba to identify FBA DASDs
- (reqd. by fehr)
- - less agressively assume scsi devs are disks (#47654)
- - fixed external hardware db parser (#47606, comment 6)
- - ibm notebook data updated
- - avoid libsysfs accidentally reading pci config space
- - fixed parsing of scsi serial id (#48757)
- - look at /sys/class/net/*/type, too (#48812)
-
-13/10/2004: v9.32
- - report network interfaces correctly even though udev lists them
-
-12/10/2004: v9.31
- - report usb host-to-host links as network devs (#22739)
-
-11/10/2004: v9.30
- - find ide devices != cdrom & disk (#39911, #45229)
- - return special ids for synaptics touchpad (#46649)
-
-7/10/2004: v9.29
- - fixed segfault with large /proc/interrupt entries (e.g. 512 cpus) (#46582)
-
-1/10/2004: v9.28
- - list bluetooth isdn box as bt device, too (#46626)
-
-1/10/2004: v9.27
- - smartlink-softmodem is back (#46594)
- - added some dvb cards (#46612)
-
-30/9/2004: v9.26
- - updated X11 data (#45870)
-
-29/9/2004: v9.25
- - removed obsolete module info; reworked pcmcia info
-
-29/9/2004: v9.24
- - updated pcmcia & usb network data (#33647)
- - updated pci device names
-
-29/9/2004: v9.23
- - use SG_IO for SCSI device accesses (#46058)
-
-28/9/2004: v9.22
- - added gen-hwcfg-disk.sh (#46311)
-
-27/9/2004: v9.21
- - updated ancient audio info (#46096)
- - add ipw/atmel firmware packages (#45960)
- - updated X11 data
- - added new isdn cards to database
-
-27/9/2004: v9.20
- - report bluetooth devices (#45893)
-
-24/9/2004: v9.19
- - return package info for sony notebooks, too (35245)
-
-23/9/2004: v9.18
- - added --pcmcia option to hwscanqueue (#44290)
- - return package info in system entry (#35245)
-
-22/9/2004: v9.17
- - updated X11 data
-
-21/9/2004: v9.16
- - drop workaround for multiple hotplug events by broken kernel
-
-21/9/2004: v9.15
- - replaced raiddetect with dmraid
-
-20/9/2004: v9.14
- - sata info update (#45551)
- - look at smbios data for smp detection, too
-
-17/9/2004: v9.13
- - added some epson scanners (#45074)
- - adaptec module info update
-
-13/9/2004: v9.12
- - kernel-nongpl stuff only for i386 (#45099)
- - updated megaraid module info
- - ibm notebook info update (#45038)
-
-13/9/2004: v9.11
- - clear hd_data struct after it has been released (#44855)
- - updated X11 data
- - changed sata vendor name handling a bit
- - isdn: remove old bluetooth packages from database
-
-10/9/2004: v9.10
- - sata driver seems to generate a dummy scsi vendor name (#44286)
-
-6/9/2004: v9.9
- - updated tv-card info
-
-6/9/2004: v9.8
- - removed ancient function hd_has_special_eide()
- - use edd module to get extended BIOS features (#44649)
- - 'hwinfo --map' includes a hardware scan
-
-3/9/2004: v9.7
- - win modem dev name change (#44253)
- - added nongpl module info
- - fixed /tmp file handling (#44538)
-
-30/8/2004: v9.6
- - changed hwbootscan to use bash (#44199)
- - fixed hd.ids parser bug
- - updated X11 data
-
-23/8/2004: v9.5
- - updated X11 data
- - added display sizes for a number of IBM notebooks
-
-18/8/2004: v9.4
- - new wlan data (#42759, #39481, #43921)
- - hwscan now really moved to /sbin
-
-16/8/2004: v9.3
- - move hwscan* to /sbin (#43601)
-
-5/8/2004: v9.2
- - push/pop don't work with 32bit regs on amd64 (#43531)
-
-4/8/2004: v9.1
- - get netcard link state via ethtool ioctl
-
-6/7/2004: v9.0
- - ids/src/s390: changed "OSA Express Ethernet card" to "OSA Express
- Network card" (can be Token Ring, too)
- - joined changes up to 8.60 from 9.1 branch:
- - major 229, minors >= 128 are hvsi%u devies (host virtual
- serial interface) (requested by IBM)
- - ids/src/s390: use subclass 0x86 for OSA Express (bug #41461)
- - changed Broadcom netcard name (#42362)
- - dac960 data corrected (#41659)
- - s390: set status.available to yes for IUCV devs (bug #41525)
- - s390: give bus_iucv a name (bug #41525)
- - s390: give the IUCV "controller" subclass ID and name (bug #41525)
- - ia64: fixed unaligned accesses (#41589)
- - check file size so we don't read outside mmap()-ed region
- - ppc: handle iseries_veth correctly in loaded and unloaded module
- state. #41347/LTC#8984
- - send smaller scsi INQUIRY command (#38731)
- - added scsi.noserial probe option; useful for some usb sticks (#40485)
- - adding pci id fix from #40175
- - updated b44 vs. bcm4400 data
- - s390: fixed several DASD IDs
- - s390: fixed --disk filtering (bug #41231)
- - made --only more effective (#37933)
- - hwscanqueue: closing file descriptors to allow parent to terminate
- - added debug option to cpu emulation to help tracing bios related system
- crashes (#40644)
- - use sysfs_bus_id for unique ID calculation on CCW devices to avoid
- duplicate IDs (bug #40587)
- - read /proc/iSeries/config to get number of veth devs (#40527)
- - load sg module before looking for scanners (#40478)
- - updated usb scanner data (#40480)
- - got latest pci device names from pciutils
- - use mmap() to access /dev/mem & re-enable bios access
- on ia64 (#34550)
- - take out ips (#39993)
- - fixed cdb_x11 script (#40335)
- - updated X11 data (#40335)
- - fixed UML fix (#40271)
- - don't check alternate settings (#40266)
- - added functions necessary to build a model name to tiny version;
- this is needed by linuxrc (#39092)
- - detect IUCV pseudodevices (bug #39456)
- - added hd_busid_to_hwcfg() (bug #39456)
- - updated X11 data (#39767)
- - fixed strange side effect of UML detection (#39946)
- - s390: enhance grouped channel detection using ccwgroup bus
- - use *last* console parameter for serial console
- - look for usb network cards (#37870)
- - network class id cleanup (#39456)
- - add bus.name for bus.id == bus_ccw
- - avoid unspecific network types (#38874)
- - fixed memory size detection (#34895, #38758)
- - report UML network (#39521)
- - 'hwinfo --map' returns mapping new -> old block
- device names (#39437)
- - s390: set is.notready flag on unformatted DASDs (bug #39174)
- - rewrote serial console handling (#39029, #23322, #35824)
- - updated X11 data (#39282)
- - subclass 0x83 for xpnet card (#35867)
- - add UML keyboard (#38922)
- - s390: add bus id bus_ccw
- - s390: set bus.id, sysfs_bus_id and sysfs_device_link for all devices
- - s390: do not do pr_s390disks by default, and run it after pr_s390
- to keep already detected non-disk devices from being deleted
- - s390: implement rw/ro info properly
- - s390: fake geometry and size of unformatted DASDs to most likely
- values
- - removed veth.* (not needed)
- - fixed bug in modules.alias conversion script (#38800)
- - fixed linmodem data (#38800)
- - handle veth devices on iSeries (#38696, #37981)
- - another de4x5 vs. tulip case (#39127)
- - fixed cdrom config segfault (might happen while reading inconsistent
- cdrom config data)
- - support pSeries vscsi (#36029)
- - bcm5700, not tg3 on ppc* (#38647)
- - add Acer TravelMate 660 & Asus S5200N LCD sizes (#38149)
- - make SGI IOC4 known as storage controller (#38628)
- - support SGI XPNET (#35867)
-
-6/4/2004: v8.38
- - do call --partion with --fast in hwscand polling code
-
-6/4/2004: v8.37
- - fixed unique ids for pci devs (#37570)
-
-6/4/2004: v8.36
- - run raiddetect only on x86-like archs (#36157)
- - don't run raiddetect if we didn't find any disks
-
-5/4/2004: v8.35
- - don't run raiddetect if --fast option is used
-
-5/4/2004: v8.34
- - make --only accept device names, too (#38265)
- - check return value from hd_sysfs_id() (#38266)
- - make it more resistant against strange libsysfs data (#38259)
- - tg3 vs bcm5700 again (#38268)
-
-2/4/2004: v8.33
- - another wlan card (#38119)
-
-2/4/2004: v8.32
- - store driver list & sysfs info in hardware config files
-
-2/4/2004: v8.31
- - add Fritz!Card DSL SL USB in database
- - hwbootscan: move icon creation from coldplug
- - lt modem (#36552)
- - fixed some module names (#37285, #37518)
- - added dvb cards (#32730)
- - use old bios disk assign code if there's no edd info
-
-1/4/2004: v8.30
- - wlan card detection fix (#37872)
- - updated X11 data
- - read isapnp from sysfs (#35157)
-
-1/4/2004: v8.29
- - hwscanqueue: remember commands and ignore the same commands for 20
- seconds (workaround some unexpected signals from kernel)
- - hwscand: set long timeout to 10 seconds
- - hwscan*: add --partition command
-
-31/3/2004: v8.28
- - rewrote input device handling
- - load ide-cd, sd_mod, sr_mod before looking for block devs (#37558)
- - fixed usb printer detection
- - run 'raiddetect' to tag ide soft raid devices
- - minor vbe bios fixes
-
-30/3/2004: v8.27
- - changed bios probing to do less things
- - added duplicate DASD detection code from the late dasd.c
- to block.c (bug #37068)
- - changed bios probing to do less things
- - another winmodem (#37335)
-
-29/3/2004: v8.26
- - don't run modprobe if it doesn't exist
-
-29/3/2004: v8.25
- - add edd support
-
-28/3/2004: v8.24
- - added hwscand hwscanqueue
- - use sysfs for usb devices
- - scsi tapes detected again
- - added hardware class 'tape'
- - added getsysinfo script (collect data to debug hw detection)
-
-25/3/2004: v8.23
- - added hd_is_uml() to report if we're running in an UM kernel
- - b44 vs. bcm4400 (#36763)
- - fix inconsitency in device name list
- - allow device names in 'hwscan --show'
-
-22/3/2004: v8.22
- - removed Intel-v92ham support (#36667)
- - worked on new sysfs block code
-
-21/3/2004: v8.21
- - use sysfs for block devices
-
-15/3/2004: v8.20
- - fixed 8139cp/too module info (#36028)
-
-15/3/2004: v8.19
- - do not reverse sysfs order (libsysfs does it)
- - updated X11 data
- - return real device name, not udev symlink
- - DSL hardware detection for none pppoe (kkeil)
-
-14/3/2004: v8.18
- - s390: added two missing DASD device types
- - added '--root' option (for testing)
- - added '--db' option for database queries
- - fixed 'x11i' parameter handling
- - read pci.handmap
-
-9/3/2004: v8.17
- - udevinfo moved to /usr/bin
-
-8/3/2004: v8.16
- - added host info for s390 SCSI devices
- - added disk-only probing method for s390
- - added WWPN, FCP LUN for s390 SCSI devices
- - updated X11 data
-
-4/3/2004: v8.15
- - s390: added LCSS info to ccw_t
- - link libhd against libsysfs
- - added hw item for quick DASD rescanning
- - updated digital camera ids.
- - pci from sysfs finished
- - network interfaces from sysfs
-
-1/3/2004: v8.14
- - fix smp detection on ia32e (#34742)
- - store some new fields in unique-id files
- - better error logging for vbios init
- - disable all BIOS related things on ia64 (#34550)
- - updated X11 data
- - use sysfs for pci data (not default)
-
-24/2/2004: v8.13
- - include x86emu into libhd.so
- - don't segfault if we couldn't get a shared memory segment
-
-23/2/2004: v8.12
- - fixed Makefile
-
-23/2/2004: v8.11
- - added '--version' (#31925)
-
-23/2/2004: v8.10
- - check for hyperthreading on amd64 (#34742)
- - removed last references to ataraid from hardware db
- - added new x86 emulator (#34545)
- - return MacRISC<n> (#34591)
-
-17/2/2004: v8.09
- - handle '-' vs. '_' in module names
-
-17/2/2004: v8.08
- - isdn database optional read from /usr/share/hwinfo/ISDN.CDB.hwdb
- - mk_isdnhwdb tool to convert CDB data to ISDN.CDB.hwdb
- - fixed Makefile
-
-16/2/2004: v8.07
- - fixed ia64 unaligned access (#32396)
- - use modprobe for tulip (#32911)
-
-11/2/2004: v8.06
- - fixed segfault on s390*
- - removed special ia64 hardware data: new kernel, new game
-
-9/2/2004: v8.05
- - nvnet -> forcedeth (#25531)
- - sata module data updated
- - moved psaux mice to input/mice
- - make convert_hd understand modules.alias files
-
-6/2/2004: v8.04
- - sysfs includes moved
- - usb modules renamed
- - really basic udev & sysfs support for block devs
-
-4/12/2003: v8.03
- - proper multichannel device detection (finally...)
- - identify virtual reader/punch/printer
-
-2/12/2003: v8.02
- - build with "-pipe"
- - accommodated to changes in format of /proc/dasd/devices
- - ditched storage subclass dasd, introduced s390disk prog_if instead
- - ditched fake CTC controller generation
- - deal with unsorted bus trees in multichannel device detection
-
-18/11/2003: v8.01
- - converted s390 HW detection to sysfs
- - moved CU/device models to separate data structure
- - added more s390 devices
- - rewrote parsing of SMBIOS data structures
-
-28/10/2003: v8.00
- - get pci config type from kernel log (#30704)
- - add new flag 'cpuemu' to use cpu emulation on i386
-
-22/9/2003: v7.30
- - updated usb scanner & webcam data
- - updated X11 data
- - hwbootscan: split 'hwscan --pci --disk' call to avoid
- wrong unique ids for some pci devices (#31545)
-
-21/9/2003: v7.29
- - updated X11 data
-
-18/9/2003: v7.28
- - set ATA RAID bus type to 'RAID' (#31235)
-
-17/9/2003: v7.27
- - don't make every parport into a printer (#31161)
- - some driver data updated
-
-16/9/2003: v7.26
- - default to 'printer' if a class tag is missing in parport
- autoprobe data (#30982)
- - fixed serial console detection (#30936)
-
-15/9/2003: v7.25
- - pcmcia data update
-
-15/9/2003: v7.24
- - report pci modems (#30887)
- - don't get fooled by removed pcmcia cards
- - wlan data update (#30886, #30823, #30501)
- - driver data update (#30384, #29468, #30745)
-
-15/9/2003: v7.23
- - ignore alternative usb interface settings
-
-11/9/2003: v7.22
- - updated X11 data
- - don't read from cd drives that don't exist (#23248)
-
-10/9/2003: v7.21
- - fixed monitor data interpretation bug (#29718)
-
-9/9/2003: v7.20
- - more ltmodem ids
- - uli: implementation of S/390 hardware detection
-
-8/9/2003: v7.19
- - updated driver info (#25457, #29481, #25531)
- - updated X11 data
- - added --combine option to check_hd to assist in creating
- driver data
- - fixed minor typos
-
-6/9/2003: v7.18
- - updated usb mouse data (#29719)
- - better touch pad/track point reporting for notebooks
- - fork() for serial mouse & modem detection (#25843, #26513)
- - fixed hwbootscan (#29959)
- - don't load imm.o module (#14175)
-
-2/9/2003: v7.17
- - catch more vm86() faults (#28381)
- - added 'active' status flag (not modified by libhd)
-
-1/9/2003: v7.16
- - update ISDN CDB data
- - catch faults inside vm86() code (#29571)
- - give wlan cards their own subclass (#29506)
- - updated X11 data
-
-28/8/2003: v7.15
- - iopl() may fail even if we're root (#29494)
-
-27/8/2003: v7.14
- - probe for multiple hardware classes at a time
-
-26/8/2003: v7.13
- - default ISDN data for all ARCH
- - update ISDN CDB data
-
-26/8/2003: v7.12
- - updated X11 data (#29316)
- - add ISDN database for ia64
- - fix minor warnings
-
-25/8/2003: v7.11
- - don't try BIOS things on SGI Altix (#28663)
-
-25/8/2003: v7.10
- - added lots of new camera ids.
- - new isdn data taken from cdb
- - updated X11 data
-
-18/8/2003: v7.09
- - add ChildIDs field (reverse of ParentID)
-
-12/8/2003: v7.08
- - better internal hwclass handling
-
-11/8/2003: v7.07
- - define HARDWARE_DIR in hd.h
-
-8/8/2003: v7.06
- - use modprobe instead of insmod for scsi modules
-
-5/8/2003: v7.05
- - ltmodem is back
- - parent id, again
-
-5/8/2003: v7.04
- - hp officejet scanner gets package info & own subclass
-
-1/8/2003: v7.03
- - reworked usb things
-
-18/7/2003: v7.02
- - changed disk size reading for 2.6
- - more 2.6 header fixes
-
-17/7/2003: v7.01
- - store parent id (#27508) and hotplug field
- - new attempt to work around broken cciss_ioctl.h inclue file
-
-16/7/2003: v7.00
- - detect pcmcia cards
- - updated x11 data
-
-16/4/2003: v6.20
- - fixed megaraid info (#26325)
-
-27/3/2003: v6.19
- - scan for partitions
-
-13/3/2003: v6.18
- - ltmodem stuff makes trouble, removed (#25309)
-
-13/3/2003: v6.17
- - updated X11 data (#25217)
-
-12/3/2003: v6.16
- - be more careful when joining feature flags of
- ide-scsi handled devices (#25169)
-
-12/3/2003: v6.15
- - limit the maximum amount of data we expect looking
- for serial mice (#25153)
-
-11/3/2003: v6.14
- - updated ide raid info (#25010)
-
-10/3/2003: v6.13
- - added more notebook data
-
-8/3/2003: v6.12
- - fixed ide-scsi detection bug (device names mixed up if more than
- one device is handled by ide-scsi)
-
-8/3/2003: v6.11
- - updated data from pci utils
-
-8/3/2003: v6.10
- - detect wlan cards (#23491)
-
-7/3/2003: v6.09
- - usb multiple interfaces again: only for HID devices (#24824)
- - add monitor vendor & device name
- - allow hwscan to be disabled at boot time via 'hwprobe=-scan'
-
-6/3/2003: v6.08
- - updated X11 data
- - added '--dsl' option to hwscan
-
-6/3/2003: v6.07
- - write ff to /dev/lp0 if imm.o didn't load (#14175)
- - probe for scsi cache even in fast mode, else we miss scsi cd writers
- - better Epson scanner detection (#20837)
- - fixed stupid '\0'-missing-at-end-of-buffer bug
- - added '--slient' option to hwscan (don't show ids)
- - cleaned up notebook lcd detection and added more data
-
-4/3/2003: v6.06
- - fixed floppy detection (#24283)
-
-4/3/2003: v6.05
- - fixed ataraid detection (format of /proc/ide/ide?/config
- changed, #23057, #24528)
-
-3/3/2003: v6.04
- - bcm instead of tg3 (request by ak)
- - reenable mouse probing, but without serial mice and no dialog (#20309)
- - support some winmodems
- - updated X11 data
-
-26/2/2003: v6.03
- - better ZIP drive handling
- - handle usb devices with multiple interfaces (#21487, #22223, #22843)
- - removed 'Looking for braille...' line
- - fixed multi-CDROM bug (#24280)
- - save/restore feature flags (#23364)
- - keep feature flags for ide-scsi handled drives (#23550)
-
-25/2/2003: v6.02
- - fixed 64 bit int -> pointer gcc warnings
- - fixed minor database lookup bug
- - database parser logs to logfile, not stderr
- - support serial mice with really strange vendor ids (#24137)
-
-24/2/2003: v6.01
- - add fibre channel adapters to storage controller list (#23686)
-
-24/2/2003: v6.00
- - fixed gcc warnings
- - updated module info
- - increased major version
-
-18/2/2003: v5.55
- - added pppoe detection
- - updated X11 data
-
-18/2/2003: v5.54
- - removed experimental code causing segfault on compaq machines
-
-10/2/2003: v5.53
- - remove mouse probing from hwbootscan, it sometimes
- hangs and takes too long.
- - add --fast to --cdrom probe, so the cdrom is not opened.
- - updated X11 data
-
-4/2/2003: v5.52
- - fixed pci base addresses on 64bit archs (#21075)
-
-20/1/2003: v5.51
- - detection of more Microcom modems
- - updated the pcmcia controllers fallback list
- - added a minimal man page
- - add AVM Fritz!Card DSL USB
- - updated X11 data
-
-13/1/2003: v5.50
- - added Myrinet support (#21130)
- - make it compile on !(x86_64 & ia64) again
-
-9/1/2003: v5.49
- - fixed some network card names (#22795)
- - added wheel mouse data (#22797)
- - make it compile on x86_64 & ia64 again
-
-13/12/2002: v5.48
- - cdrom feature list (dvd, cdr, etc)
-
-27/11/2002: v5.47
- - changed tg3/bcm* on ia64 (#21984)
- - one ncr53c8xx vs. sym53c8xx issue (#21984)
- - cleanup ISDN ids, remove unsupported protocols (#22179)
-
-25/11/2002: v5.46
- - rewrote assignment of BIOS driver numbers
- - slight cleanup of int10 code
-
-19/11/2002: v5.45
- - use eepro100 instead of e100 on ia64 (#21055)
-
-18/11/2002: v5.44
- - fixed qla* module info (#21567)
-
-6/11/2002: v5.43
- - joined with 8.1 branch
-
-4/11/2002: v5.42
- - check for REDIRECT in hwscan init script (in case it gets called
- from the commandline). #17773
-
-4/11/2002: v5.41
- - do some consistency checks on legacy data from BIOS area (#21462)
-
-17/10/2002: v5.40
- - updated megaraid info (#21043)
-
-10/10/2002: v5.39
- - updated tg3/bcm5700 driver info (#19913)
-
-7/10/2002: v5.38
- - added aacraid driver info (#20592)
- - don't run yast if no keyboard is attached (#19768)
-
-30/9/2002: v5.37
- - add "Virtual" to veth description string (#20319)
-
-27/9/2002: v5.36
- - fixed floppy detection (#20269)
- - x11 data update (#20182)
- - added IBM ServeRAID ids (#20268)
-
-23/9/2002: v5.35
- - 'hwscan --pci' should add prom id (#19648)
-
-20/9/2002: v5.34
- - ia64: switch back to reading ACPI tables for SMP detection.
-
-18/9/2002: v5.33
- - fixed chksum call causing hwinfo to hang in some cases on ia64
- - don't overwrite vga modelist
-
-10/9/2002: v5.32
- - avoid alignment problems on ia64
- - fixed usb-cdrom probing (#19407, #19440)
- - removed '--fast' for disk probing; instead, fixed i2o & cciss
-
-10/9/2002: v5.31
- - probe for cdrom & disk at boot (#19297)
- - '--fast' option has effect on disk probing (no i2o & cciss)
- - dmfe instead of tulip (#19271)
- - convert_hd now understands XML properly
- - removed outdated docs
-
-9/9/2002: v5.30
- - probe also USB isdn controllers (#18830)
- - added '--help' option to check_hd & convert_hd
- - converted pci info to utf8
-
-7/9/2002: v5.29
- - make sure usb floppies are reported as such (#12262)
-
-6/9/2002: v5.28
- - new x11 data
- - report s390x arch properly
-
-5/9/2002: v5.27
- - added amd-8111 info
- - fixed dpt info (#18914)
- - always smp on s390* (#18990)
- - changed pcnet32 description (#18892)
-
-4/9/2002: v5.26
- - show boot catalog address in cd info
-
-4/9/2002: v5.25
- - switched escon adapter from 0x70 to 0x8
- - corrected number for CTC, IUCV, HSI and QETH
- - fix usb isdn adapter detection (#18829)
- - updated pci & usb data
-
-3/9/2002: v5.24
- - fixed ata raid code
- - new usb mouse (#18296)
-
-3/9/2002: v5.23
- - updated x11 data
-
-02/9/2002: v5.22
- - code for detekting configured CTC, IUCV, HSI and QETH
- adapters on s390/s390x
- - fixed iSeries network id
-
-29/8/2002: v5.21
- - braille detection on sparc
- - fixed script that reads CDB data
- - log error messages from vm86 code
- - better chipcard reader support
- - use _exit instead of exit on some more places.
- - prepared for uclibc
- - save & restore resource data
-
-28/8/2002: v5.20
- - got rid of gcc warning
-
-28/8/2002: v5.19
- - added x86_64 x11 data
-
-27/8/2002: v5.18
- - changed dasd.c to accept old and new format of /proc/dasd/devices
- - better serial mouse detection (#18384)
-
-27/8/2002: v5.17
- - msvec: detect some microcom modems (#15359)
-
-26/8/2002: v5.16
- - use "reprobe" as yast2 argument, not (.reprobe)
- - added some new hardware types
- - fixed usb & ieee1394 controller detection
-
-22/8/2002: v5.15
- - check cpuid for hyperthreading (#13532)
- - add new bus id 'Virtual IO' for DASD (#18202)
- - use grub on x86_64
- - fixed s390 cpu detection
-
-20/8/2002: v5.14
- - mls: x86 emu for BIOS calls on ia64
-
-19/8/2002: v5.13
- - mls: x86 emu for BIOS calls on x86_64
- - updated x11 data
-
-16/8/2002: v5.12
- - changes in libhd interface
-
-15/8/2002: v5.11
- - segfault in hwinfo, part 2
- - fixed symbios module entry
-
-13/8/2002: v5.10
- - get isdn model name from isdn database
- - updated megaraid info
- - make install creates /etc/init.d
-
-13/8/2002: v5.09
- - added info for firewire module
- - fixed convert_hd to work with perl 5.8
-
-12/8/2002: v5.08
- - fixed evil segfault in hwinfo
- - updated docs
-
-9/8/2002: v5.07
- - moved unique key file to var/lib/hardware/unique-keys
- - moved things from var/lib/libhd to var/lib/hardware
- - added HD_VERSION #define to hd.h
-
-8/8/2002: v5.06
- - extended isdn package info
- - detect dvb cards
- - fixed reading driver info
- - updated driver info
- - changed tv card detection code
-
-6/8/2002: v5.05
- - minor libhd interface changes
-
-5/8/2002: v5.04
- - gmac -> sungem
- - don't source rc.config
- - report cardbus cards
- - _exit instead of exit to avoid calling QT destructors in Yast2
- - activated new database code
-
-22/7/2002: v5.03
- - updated x11 data
-
-22/7/2002: v5.02
- - run hwbootscan rc script after "kbd" script
- - don't _change_ config status in hwbootscan
- - save %gs register around vm86() syscall (%gs may be used in glibc)
- - isdn changes
- - better handling of dasd devs
- - grub instead of lilo on ix86
-
-13/6/2002: v5.01
- - made ia64 cpu model entry more useful
- - get bios led status
-
-6/6/2002: v5.00
- - assign hardware added via 'hwprobe' a proper inital status
- - added alsa driver info
- - dropped old pnpdump() code
-
-24/4/2002: v4.26
- - add x86-64 support
-
-27/3/2002: v4.25
- - prevent doubled cdrom hardware items
-
-27/3/2002: v4.24
- - fixed cdrom device detection (#15553)
- - don't assign lp8 to nonexistent usb printers
-
-25/3/2002: v4.23
- - updated help texts
-
-25/3/2002: v4.22
- - recognize fibre channel controllers as storage controllers
-
-24/3/2002: v4.21
- - read bios data in libhd_tiny (to allow vaio handling in linuxrc, #12075)
- - read /etc/module.pcimap, too (it's there during installation)
- - new x11 data
- - de4x5.o vs. tulip.o issue (#15303)
- - added Netgear WLAN-Card data (#14848)
-
-21/3/2002: v4.20
- - remove /var/lib/hardware/LOCK in hwbootscan (#15217)
- - updated X11 data
- - prefer tg3 over bcm5700
- - fixed broken framebuffer detection: reenabled & fixed pci setup code
-
-18/3/2002: v4.19
- - fixed segfault in ide code
-
-16/3/2002: v4.18
- - fixed bug that caused 'Processor' scsi devices to be treated
- as disks (mentioned in #15007)
-
-14/3/2002: v4.17
- - udated mptbase driver info (#14732)
- - better handling of usb-storage devices
- - add mouse info we got from smbios
- - use info from modules.pcimap
- - detect memory size > 4GB (#14287)
-
-9/3/2002: v4.16
- - made hwbootscan an init script again, started after hotplug.
- - do not delete the reconfig.needed files, but set configured=no
- and needed=no to avoid problems with unsupported graphic cards.
- - added usb ids from usbutils
- - fixed network module info (#14529)
- - improved smbios parser
- - updated x11 driver info
- - isdn: fix wrong names (AVM) and add more USB devices
- - disabled pci setup code that caused infinite loops on
- some systems with isa gfxcards
-
-4/3/2002: v4.15
- - new isdn data
- - look at /proc/apm, too
- - updated network driver info
- - detect fujitsu siemens notebook lcd
- - updated x11 driver info
- - updated pci device list
- - check for isapnp devs in boot.hwscan, too
-
-1/3/2002: v4.14
- - detect USB scanner by just looking if the module is usbscanner
- - new scanner ids
- - camera subclass ids were 1 off from enumeration
- - added some new hardware classes: bios, bridge, hub, usb_ctrl
- - added '--pci' and '--isapnp' options to hwscan
- - fixed evil segfault caused by reading some hardware configs
- - added '--fast' option to hwscan: don't check for tricky hardware
- as serial mice or parport zips unless they had been found
- previously
- - boot.hwscan: probe for mice & pci hardware only (to be faster)
- - don't try to access 'not available' devices
-
-25/2/2002: v4.13
- - meissner: boot.hwscan:
- probe for storage, network, tv, sound handware
- - updated x11 data
- - handle usb ehci controller
- - added basic smbios parser
-
-21/2/2002: v4.12
- - meissner: boot.hwscan: fixed confused curses output
- - new isdn database
- - update 'not available' state
- - changed unique_id algorithm for usb devices
-
-18/2/2002: v4.11
- - added new scanner
- - updated x11 data
- - experimental support for hpt3* ideraid
-
-12/2/2002: v4.10
- - meissner: mouse probing is in choose_mouse
- - meissner: added arguments for light probing '(.reprobe)' as suggested by tom
-
-11/2/2002: v4.09
- - isdn database now in libhd, support for multiple isdn driver
-
-7/2/2002: v4.08
- - renamed a function to avoid conflicts with linuxrc
-
-7/2/2002: v4.07
- - fixed dac960 detection: we used to return just the 1st disk
-
-7/2/2002: v4.06
- - first attempt to handle ide raid controller
- - use /proc/partitions to find disks, too
-
-6/2/2002: v4.05
- - make hd_list() work properly if LIBHD_TINY is defined
- - added new braille display
- - hwinfo accepts '--netcard' as alias to '--network_ctrl'
-
-4/2/2002: v4.04
- - store a config string along with the config status
-
-4/2/2002: v4.03
- - changed hd_change_status() prototype
-
-20/1/2002: v4.02
- - fixed bug that prevented hwprobe env var to work in some cases
-
-28/1/2002: v4.01
- - hwscan: touch /var/lib/hardware/.update if things have changed
- - meissner: added boot scripts
-
-21/1/2001: v4.00
- - increased major version number, as we're incompatible to v3 meanwhile
- - added function to set hardware config status data directly
-
-20/1/2002: v3.40
- - updated hwscan so it does something useful
- - updated x11 data
-
-14/1/2002: v3.39
- - next try with dietlibc on sparc
-
-14/1/2002: v3.38
- - olh: assume veth always present
- - make it work with dietlibc on sparc
- - new class: hw_usb_ctrl
-
-4/1/2002: v3.37
- - reimplemented iSeries veth device detection (#12680)
-
-14/12/2001: v3.36
- - create version for linking against dietlibc
- - mls: continue even if some vbe calls fail
-
-26/11/2001: v3.35
- - prepare for arm
-
-22/11/2001: v3.34
- - call cpu probe for keyboard query
- - reduced libhd_tiny size
-
-2/11/2001:. v3.33
- - read country code from usb devices
-
-30/10/2001: v3.32
- - handle iSeries network and storage devices
- return ppc64 when uname -m returns it
-
-18/10/2001: v3.31
- - gmac controllers are powered off when unconfigured, so
- we have to provide the class id ourself (#11733)
-
-15/10/2001: v3.30
- - don't load parport modules on pmac (#11743)
- - provide monitor sync data if they are missing
-
-10/10/2001: v3.29
- - more apple monitor fixes
-
-9/10/2001: v3.28
- - work around incorrect iMac monitor data
-
-8/10/2001: v3.27
- - ppc: detect swim3 floppy (#11643)
- - ppc: pr_prom needs pr_pci in some cases
- - add monitor entry based on fbdev data, if we have
- nothing better (#11344)
-
-5/10/2001: v3.26
- - fix the check for active framebuffer (ppc)
- the current one is a hack and doesnt work in all cases
- - use pc104 instead of powerpcps2 (ppc)
- - longer timeouts in modem detection (#11432)
- - don't merge pci and proc data on ppc (#10435)
- - pci data are inconsistent on ppc, remove consistency check (#11551)
- - new x11 data (ppc)
-
-24/9/2001: v3.25
- - updated X11 data
- - no longer default to XF3 for installation on ppc (#11260)
-
-24/9/2001: v3.24
- - added LSIFC9xx/LSI409xx Fibre Channel (#11251)
-
-24/9/2001: v3.23
- - use aic7xxx_old one some controllers (#11202)
- - use de4x5 instead of tulip for one card (#11093)
- - updated X11 data
-
-20/9/2001: v3.22
- - make AIPTEK tablet a mouse again
- - added old_unique_id field
- - updated driver info
-
-19/9/2001: v3.21
- - new sound card
- - new x11 data
-
-18/9/2001: v3.20
- - rewrote floppy detection to make it work on non-i386 archs
- - new x11 data
-
-11/9/2001: v3.19
- - updated X11 data
- - get current video mode
-
-10/9/2001: v3.18
- - updated X11 data
- - make it work with diet-libc
- - should correctly report vmware cards now
-
-4/9/2001: v3.17
- - changed unique_id calculation (#10139)
- - introduced arch_ppc64, CHRP64 -> CHRP
- - new X11 data
-
-3/9/2001: v3.16
- - usb printer device names have changed
- - new x11 data
- - fixed segfault bug in ide-scsi handling
-
-29/8/2001: v3.15
- - new x11 data
- - ignore obviously broken ddc info
-
-27/8/2001: v3.14
- - new qlogic driver info (#9868)
- - completely new x11 data
-
-23/8/2001: v3.13
- - fixed to work with the new cpqarray driver
- - fixed evil database bug (#9798)
-
-20/8/2001: v3.12
- - removed usb network module info
- - added iSeries disks
-
-17/8/2001: v3.11
- - added usb network data
-
-17/8/2001: v3.10
- - install in $DESTDIR
- - handle ide-scsi drives
- - fix segfault bug in apm detection
-
-9/8/2001: v3.09
- - fixed some drivers.audio entries
-
-6/8/2001: v3.08
- - added sungem
- - fixed qlogicfc entry
- - fixed tv card detection
-
-1/8/2001: v3.07
- - fixed typo in short model name calculation
-
-31/7/2001: v3.06
- - make now builds shared version per default
-
-30/7/2001: v3.05
- - integrated hwscan
-
-27/7/2001: v3.04
- - added chipcard reader support
- - added camera (webcam) support
- - added framebuffer support (currently: VESA)
-
-26/7/2001: v3.03
- - support (usb) joysticks
-
-25/7/2001: v3.02
- - added access functions for /var/lib/hardware/ to libhd
- - hwinfo: no progress info if output is redirected
- - hwinfo: multiple arguments allowed
- - assign a hw_class
-
-24/7/2001: v3.01
- - report smp capability only if >1 processors are active
-
-23/7/2001: v3.00
- - SMP code can now handle empty MP tables
- - support module lists in driver info
- - new 'manual' flag indicating hardware that was not
- detected but entered manually
- - report usb capability only if the controller has an irq assigned
-
-27/6/2001: v2.22
- - added usb scanner detection
- - set gpm protocol to imps2 for wheel mice
- - bios based monitor detection enabled per default
- - made usb module loading default
-
-25/6/2001: v2.21
- - sndirsch: corrected 3D info for geforce3 cards
-
-21/6/2001: v2.20
- - updated driver info for new gdth.o
-
-19/6/2001: v2.19
- - fixed for s390x
-
-13/6/2001: v2.18
- - schwab: don't dereference free'd pointer
- - prefer e100.o over eepro100.o (#8797)
- - fixed framebuffer mode detection bug (#8620)
-
-7/6/2001: v2.17
- - fixed keyboard detection on sparc
-
-22/5/2001: v2.16
- - dan: fix usb modem bug (#8490)
- - remove 3d & xf_v3 driver info for ia64
-
-14/5/2001: v2.15
- - use isapnp_reset=0 for loading isa-pnp.o
-
-11/5/2001: v2.14
- - new driver data for 3c509
- - X11 data updated
- - have i2o cards listed as storage controllers (#6335)
-
-10/5/2001: v2.13
- - increase /dev/psaux timeout
- - adapted missing keyboard detection for kernel 2.4
-
-10/5/2001: v2.12
- - less things in libhd_tiny.a
- - read block 0 from disks _before_ going to look for the boot device
- - vmware detection clobbers %ebx; fixed
- - completely new monitor data base (#7536)
-
-7/5/2001: v2.11
- - preserve %ebx in i10_v86.c::vm86_rep
-
-7/5/2001: v2.10
- - rewrote isapnp detection for 2.4 kernel
- - updated driver info data
- - added "Baum" braille display detection
-
-3/5/2001: v2.09
- - support vbe bios calls to get monitor data (default: disabled)
- - added more usb wheel mice
-
-3/5/2001: v2.08
- - added vmware check
- - don't do scsi write cache detection in vmware
- - added ia64 smp detection
- - ia64 x11 data added
- - use tulip instead of de4x5 (#7317)
-
-30/4/2001: v2.07
- - updated x11 data
- - fixed multi-head display handling
- - adapted compaq smart array detection for kernel 2.4
-
-25/4/2001: v2.06
- - parport detection updated for kernel 2.4
- - add scsi hostadapter info to debug output
- - usb-storage again
- - boot_ia64 -> boot_elilo
-
-24/4/2001: v2.05
- - worked on usb-storage support
- - no isa-pnp probing in linuxrc
-
-20/4/2001: v2.04
- - better usb-storage support
-
-19/4/2001: v2.03
- - reworked floppy detection
- - identify devices with removable media
- - zip drives are always reported as floppies
-
-18/4/2001: v2.02
- - reworked ps/2 mouse code
- - provide number of buttons/wheels for mice
- - X11 data updated (ia32)
-
-7/4/2001: v2.01
- - new output format for support tool
- - more options for hwinfo
- - include pcmcia/cardbus cards in device lists
-
-5/4/2001: v2.00
- - new major version due to incompatible interface changes
- - integrated experimental changes (split was after v1.90)
-
-3/4/2001: v1.99
- - fixed segfault bug in alpha smp code
-
-26/3/2001: v1.98
- - unique id format changed
-
-21/3/2001: v1.97
- - fixed src/ids/Makefile for axp
- - slightly changed display detection code on axp
-
-20/3/2001: v1.96
- - new axp x11 data
-
-28/2/2001: v1.95
- - stepan: removed ISDN on alpha
- - avoid trigraphs while generating the data base
-
-22/2/2001: v1.94
- - fixed hd_copy() segfault bug (ppc)
-
-21/2/2001: v1.93
- - implemented SMP detection on ppc
-
-20/2/2001: v1.92
- - backport of new SMP detection code (ia32)
- - get console speed from kernel command line (ppc)
-
-15/2/2001: v1.91
- - fixed evil scsi device detection bug
- (missing scsi devices under some strange circumstances)
- - don't probe physical scsi geometry
-
-12/2/2001: v1.90
- - changed display adapter detection code to prefer sbus cards
-
-9/2/2001: v1.89
- - kkaempf: "ld -shared" is forbidden, changed to "gcc"
-
-7/2/2001: v1.88
- - new x11 data (sparc)
-
-31/1/2001: v1.87
- - mls: new oem stuff
-
-30/1/2001: v1.86
- - new x11 data (sparc)
-
-29/1/2001: v1.85
- - kukuk: sparc keyboard patches
-
-23/1/2001: v1.84
- - mls: added '--packages' option to hwinfo
-
-21/1/2001: v1.83
- - new x11 data (sparc)
-
-19/1/2001: v1.82
- - ncr*.o instead of sym*.o for 53c895a
- - new x11 data (ia32)
-
-18/1/2001: v1.81
- - fixed ISAPnP device name handling
- - back to ncr*.o for 53c875 [devid 0xf] (#5816)
- - added new tulip card
-
-17/1/2001: v1.80
- - updated dac960 driver info
-
-17/1/2001: v1.79
- - new x11 data
- - added '--help' option to hwinfo
- - implemented a basic getopt-style hwinfo interface
- - activate pr_bios if pr_misc is set
-
-16/1/2001: v1.78
- - updated driver info (starfire/qla2x00)
-
-16/1/2001: v1.77
- - back to old version scheme to avoid update problems
-
-15/1/2001: v1.0.76
- - updated scsi driver info
-
-15/1/2001: v1.0.75
- - new x11 data
- - make XF 4 default if no X11 info is found (ia32 only)
- - fixed serial line detection bug
-
-14/1/2001: v1.0.74
- - updated pci name list
- - updated scsi/network driver info
-
-12/1/2001: v1.0.73
- - new x11 data
- - sym*.o instead of ncr*.o for 53C875
- - quick fix for Wacom tablets
-
-12/1/2001: v1.0.72
- - fix minor bug in printer detection
- - fix bios disk number detection
-
-11/1/2001: v1.0.71
- - arvin: made res_pppd_option work
- - arvin: fixed detection of terminal adapters
- - sped up new modem stuff if no modem is connected
-
-11/1/2001: v1.0.70:
- - new x11 data (sparc)
-
-10/1/2001: v1.0.69
- - introduced res_pppd_option
- - new x11 data (ia32)
-
-9/1/2001: v1.0.68
- - smid@suse.cz: improved modem init string code
-
-8/1/2001: v1.0.67
- - fixed color depth handling
- - fixed multi-soundcard bug
- - new x11 data
-
-7/1/2001: v1.0.66
- - kendy@suse.cz: use BIOS port info for parport
- - new x11 data for all archs
- - 8139too instead of rtl8139 whenever possible
-
-20/12/2000: v1.0.65
- - added modem init string patch from smid@suse.cz
-
-19/12/2000: v1.0.64
- - added cciss stuff
- - updated x11 data
-
-18/12/2000: v1.0.63
- - BIOS lba stuff now works
-
-18/12/2000: v1.0.62
- - updated x11 data
-
-14/12/2000: v1.0.61
- - updated x11 data
- - build pnpdump only on i386 and alpha
- - hwinfo can now update x11 info in install.inf
-
-13/12/2000: v1.0.60
- - hwinfo can now update braille info in install.inf
- - activate alva braille detection
-
-13/12/2000: v1.0.59
- - updated x11 data
-
-12/12/2000: v1.0.58
- - new version number scheme (due to shared lib)
- - create shared libhd
- - report BIOS lba extension support
- - rearranged building libhd_tiny a bit
-
-12/12/2000: v1.57
- - fixed isapnp segfault bug
- - updated x11 data
-
-8/12/200: v1.56
- - new alva detection code
- - added cd-r/dvd detection
- - read "el torito" boot info
- - updated x11 info
-
-7/12/2000: v1.55
- - fixed evil hddb bug
- - added 3d script field
-
-9/11/2000: v1.54
- - started work on hddb fix
- - renamed timeout -> hd_timeout
-
-27/10/2000: v1.53
- - remove memory leaks, part 2 (ppc)
-
-26/10/2000: v1.52
- - add CD-RW detection (and DVD)
-
-25/10/2000: v1.51
- - remove memory leaks, part 1
-
-10/10/2000: v1.50
- - distinguish between chrp & chrp64
-
-10/10/2000: v1.49
- - provide a unique key for every hardware item
-
-10/10/2000: v1.48
- - cpu/smp detection code improved
-
-28/9/2000: v1.47
- - sparc: new x11 info
-
-22/9/2000: v1.46
- - ppc: fixed serial line & modem detection
-
-21/9/2000: v1.45
- - provide CHPID on s390
-
-20/9/2000: v1.44
- - added missing closedir()
-
-18/9/2000: v1.43
- - improved /proc/interrupt parsing
- - ppc: always return a ps/2 mouse for PreP & CHRP
- - skip serial device detection for console & yast2ser /proc/cmdline
- entries
- - ids updated
-
-18/9/2000: v1.42
- - now *really* disabled braille except on ia32
-
-15/9/2000: v1.41
- - ppc: changed some ids
-
-13/9/2000: v1.40
- - serial console detection for ppc
-
-13/9/2000: v1.39
- - ppc x11 driver info
- - ppc serial console
- - braille only on ia32
- - fixed scsi segfault bug
-
-8/9/2000: v1.38
- - updated device ids
- - added basic i2o support
- - disabled isapnp on ppc
-
-7/9/2000: v1.37
- - fixed modem segfault bug
- - fixed Zip device detection
-
-6/9/2000: v1.36
- - s390 network devices
-
-5/9/2000: v1.35
- - s390: finds disks
- - ppc: better sound detection
-
-25/8/2000: v1.34
- - new platform cpu entry on alpha
-
-24/8/2000: v1.33
- - better monitor & display detection on ppc
-
-23/8/2000: v1.32
- - made libhd at least to compile on s390
-
-23/8/2000: v1.31
- - slightly changed memory detection
- - ADB mice: /dev/input/mice
-
-15/8/2000: v1.30
- - added monitor detection on ppc
- - fixed iso9660 info reading
-
-14/8/2000: v1.29
- - added PROM parser for ppc; currently handles
- SCSI, network, sound & floppy devices
-
-9/8/2000: v1.28
- - added pr_misc to hw_isdn
- - fixed memory size detection
- - added 'generation' to system entry (for ppc)
- - new scsi detection code
- - kukuk: PS/2 keyboard detection on UltraSPARC
-
-28/7/2000: v1.27
- - fixed 'x11' parameter parsing
-
-27/7/2000: v1.26
- - added '--special' option to hwinfo (needed for live CD)
- - updated x11 data
-
-24/7/2000: v1.25
- - SMP detection: look for 'apic' flag
- - updated x11 data
-
-20/7/2000: v1.24
- - fixed Vaio detection
- - updated special ide chipset list
- - included more functions in LIBHD_TINY
- - updated x11 data
-
-19/7/2000: v1.23
- - updated x11 data
-
-18/7/2000: v1.22
- - dropped alva probing
- - updated x11 data
-
-15/7/2000: v1.21
- - fixed isapnp isdn probing bug
- - updated x11 data
-
-14/7/2000: v1.20
- - fixed stupid printer probing bug
- - updated x11 data
-
-13/7/2000: v1.19
- - fixed bootdevice detection bug
- - detect PowerBooks
-
-12/7/2000: v1.18
- - updated alsa driver info
- - updated minicdb id data
- - fixed missing isapnp sound cards bug
-
-11/7/2000: v1.17
- - added Sony Vaio detection
- - changed lance driver entry
- - fixed isdn/network card bug
- - updated id data
-
-10/7/2000: v1.16
- - pnpdump: start port scanning at port 0x20b, not 0x203
- (skips potential game port)
- - get ids directly from minicdb
-
-7/7/2000: v1.15
- - fixed hw_sys/hw_tv probing bug
-
-6/7/2000: v1.14
- - new 'system' hw entry
- - sparc smp detection: active -> probed
-
-5/7/2000: v1.13
- - added parallel Zip drive detection
-
-3/7/2000: v1.12
- - don't list cardbus/pcmcia devs in hd_list()
- - add multimedia/video boards to display adapters
-
-27/6/2000: v1.11
- - increased timeout in fhp detection
-
-27/6/2000: v1.10
- - fixed bug in braille detection
-
-26/6/2000: v1.09
- - updated README
- - fixed bug in 'hwprobe' handling
-
-26/6/2000: v1.08
- - new usb mouse devices
-
-22/6/2000: v1.07
- - activated serial line scanning in linuxrc
- - extendend 'hwprobe=' features
-
-21/6/2000: v1.06
- - fhp_old braille detection implemented
- - alva & ht braille stuff added
-
-21/6/2000: v1.05
- - changed (driver_info_x11_t).x11.raw to str_list_t
-
-21/6/2000: v1.04
- - added 'x11' kernel cmdline param
-
-20/6/2000: v1.03
- - fixed mk_ids (used to drop all non-x11 ids)
- - improved 'hwprobe=' functionality
- - fhp braille detection implemented
-
-20/6/2000: v1.02
- - updated pciutils & sax/sax2 data
- - added fire gl1
- - added 'hwprobe' env resp. kernel cmdline param
-
-13/6/2000: v1.01
- - new module info
- - fix old VGA entries
- - hw_tv now functional
-
-9/6/2000: v1.00
- - added hw_monitor, hw_printer, hw_tv, hw_scanner
- [hw_tv, hw_scanner still non-funcional]
- - improved ddc parsing (new syslinux!)
-
-7/6/2000: v0.99
- - added hd_list() function
-
-6//6/2000: v0.98
- - hd_display_list() function
- - new SaX[2] data
- - changed mk_ids to provide 3d *and* non-3d x11 entries
-
-31/5/2000: v0.97
- - provides info about bios disk ids
-
-30/5/2000: v0.96
- - extended X11 driver info (for XF86 4.0)
- - added Thorsten's small SPARC patch
- - extended serial line info
- - note: v0.95 was a ppc quick-hack only version needed for 6.4;
- it will not be integrated into the main tree
-
-24/5/2000: v0.94
- - fixed tmp file security hole
- - added hd_{mouse/keyboard/floppy}_list() functions
-
-15/5/2000: v0.93
- - integrated Thorsten Kukuk's patches (mostly SPARC stuff)
- - some minor other fixes
-
-17/4/2000: v0.92
- - ADB mouse driver info extended
- - color code stuff updated
-
-11/4/2000: v0.91
- - fixed XkbModel typo on intel/axp
- - ia64 patches from Andreas
- - new Mac color code
-
-31/3/2000: v0.89
- - changed XkbModel to "powerpcps2" on chrp machines
- - more iMac colors
-
-24/3/2000: v0.88
- - read color code on macs
-
-21/3/2000: v0.87
- - added Netfinity graphics card fix
- - 3com net card driver adjustments
- - ISDN info fix
- - SPARC keyboard code
- - added keyboard driver info
-
-14/3/2000: v0.86
- - flush serial buffer before close()
-
-8/3/2000: v0.85
- - some minor bug fixes
-
-8/3/2000: v0.84
- - changed display adapter probing to include bc_multimedia
-
-8/3/2000: v0.83
- - pci cards are attached to their resp. bridges
- - card bus cards not listed by probe_by_class
-
-6/3/2000: v0.82
- - X server list fixes
-
-5/3/2000: v0.81
- - some monitor data
-
-4/3/2000: v0.80
- - new probing flag pr_scsi_geo: defaults to off due to
- problems on scsi-Zip's
-
-3/3/2000: v0.79
- - tuned probing flags
- - renamed drivers file
- - added "Belinea 10 20 20" data (ddc info lies about supported modes!)
-
-29/2/2000: v0.78
- - new graphics cards
-
-28/2/2000: v0.77
- - modem fix: give default name if none could be determined
- - added 3Com Robotics recognition
- - added physical SCSI geometry
-
-28/2/2000: v0.76
- - automatic usb module loading
- - rewrite of the probing flags stuff; new probing flags
- - new hd_display() function
-
-26/2/2000: v0.75
- - pcmcia detection now looks at class ids
- - fixed pcmcia detection bug
- - added usb detection function
-
-26/2/2000: v0.74
- - added alsa isapnp sound cards
-
-25/2/2000: v0.73
- - sparc & baud rate fix
- - new libihw
- - minor usb improvements
- - better keyboard detection
- - ressource management for irqs
- - isdn fixes/improvements
- - added some sound cards
-
-24/2/2000: v0.72
- - libihw used only on ix86 & axp
- - pc keyboard detection
-
-23/2/2000: v0.71
- - isdn stuff
-
-22/2/2000: v0.70
- - changed x11/3d driver info
-
-18/2/2000: v0.69
- - mouse code now resets serial lines
-
-18/2/2000: v0.68
- - new try at AGP detection
- - improved mylex code
- - added compaq smart raid detection
- - improved scsi code
-
-17/2/2000: v0.67
- - improved CPU code on axp & ppc
- - changed serial line code: use non-blocking open
-
-16/2/2000: v0.66
- - new ids
- - added Mylex detection (dac960)
-
-15/2/2000: v0.65
- - a lot of driver info
- - timeout problem opening serial devs?
-
-12/2/2000: v0.64
- - added some ids
- - added Zoom modem detection
-
-11/2/2000: v0.63
- - fixed isapnp for ppc
-
-11/2/2000: v0.62
- - Makefile now knows about sparc64
- - driver info: 3c90x vs. 3c59x; see comment in drivers.SuSE
- - worked on ISDN stuff
-
-10/2/2000: v0.61
- - added peliminary usb storage device handling
- - added ISA-PnP memory range decoding
- - added ISDN probing for ISA cards (*very* preliminary)
-
-8/2/2000: v0.60
- - added UMAX USB scanner ids
- - small modem fix (open fds)
- - determines boot device
-
-5/2/2000: v0.59
- - improved boot floppy: now with usb support
- - changed hw behavior: no listing on console if a logfile is used
- - fixed missing baud defines on SPARC
- - added 3d graphics card info
- - changed internal mouse ids from PnP ids --> special ids
- - some 64 bit pci fixes
- - pci devices with missing class info: get class info from data base
- - added more usb ids
-
-4/2/2000: v0.58
- - added generic ne2000 info
- - improved printing of modules.conf entries
- - moved ID handling macros (MAKE_ID, etc) to hd.h
-
-3/2/2000: v0.57
- - added lp-devices to mk_floppy
- - added usb vendor list
- - NOTE: hd_class_list() interface slightly changed!!!
- - USB support complete rewritten
- - modem fix: avoid selecting a device twice!
- - driver info: take compatible devices into account
-
-2/2/2000: v0.56
- - more driver info
- - added hd_smp_support()
-
-1/2/2000: v0.55
- - made hd_module_is_active() global
- - added pcnet32 info
- - added 'static' target
- - fixed ddc string parser
- - fixed monitor driver info parser
- - added tiny target: -> libhd_tiny.a is minimum version for linuxrc
-
-27/10/2000: v0.54
- - rescan == 3 --> return new entries since last call with rescan == 2
-
-27/10/2000: v0.53
- - fixed driver entries with modules.conf lines
- - fixed internal handling of modules.conf entries
- - added new feature to hd_*_list() functions:
- rescan == 2 --> return only new entries
-
-25/10/2000: v0.52
- - started this log :-)
- - modem code now handles non-pnp modems
- - added a baud resource to modem entries: holds the modem's max.
- port speed
- - added some modem ids
- - updated docu (interface.html)
+++ /dev/null
-TOPDIR = $(CURDIR)
-SUBDIRS = src
-TARGETS = hwinfo hwscan hwscand hwscanqueue
-CLEANFILES = hwinfo hwinfo.static hwscan hwscan.static hwscand hwscanqueue doc/libhd doc/*~
-LIBDIR = /lib
-ULIBDIR = /usr$(LIBDIR)
-LIBS = -lhd
-SLIBS = -lhd -lsysfs
-TLIBS = -lhd_tiny -lsysfs
-SO_LIBS = -lsysfs
-TSO_LIBS = -lsysfs
-
-export SO_LIBS
-
-include Makefile.common
-
-SHARED_FLAGS =
-OBJS_NO_TINY = names.o parallel.o modem.o
-
-.PHONY: fullstatic static shared tiny doc diet tinydiet uc tinyuc
-
-hwscan: hwscan.o $(LIBHD)
- $(CC) hwscan.o $(LDFLAGS) $(LIBS) -o $@
-
-hwinfo: hwinfo.o $(LIBHD)
- $(CC) hwinfo.o $(LDFLAGS) $(LIBS) -o $@
-
-hwscand: hwscand.o
- $(CC) $< $(LDFLAGS) -o $@
-
-hwscanqueue: hwscanqueue.o
- $(CC) $< $(LDFLAGS) -o $@
-
-# kept for compatibility
-shared:
- @make
-
-tiny:
- @make EXTRA_FLAGS=-DLIBHD_TINY LIBHD_BASE=libhd_tiny LIBS="$(TLIBS)" SO_LIBS="$(TSO_LIBS)"
-
-tinyinstall:
- @make EXTRA_FLAGS=-DLIBHD_TINY LIBHD_BASE=libhd_tiny LIBS="$(TLIBS)" SO_LIBS="$(TSO_LIBS)" install
-
-tinystatic:
- @make EXTRA_FLAGS=-DLIBHD_TINY LIBHD_BASE=libhd_tiny SHARED_FLAGS= LIBS="$(TLIBS)" SO_LIBS="$(TSO_LIBS)"
-
-tinystaticinstall:
- @make EXTRA_FLAGS=-DLIBHD_TINY LIBHD_BASE=libhd_tiny SHARED_FLAGS= LIBS="$(TLIBS)" SO_LIBS="$(TSO_LIBS)" install
-
-diet:
- @make CC="diet gcc" EXTRA_FLAGS="-fno-pic -DDIET" SHARED_FLAGS= LIBS="$(SLIBS)"
-
-tinydiet:
- @make CC="diet gcc" EXTRA_FLAGS="-fno-pic -DLIBHD_TINY -DDIET" SHARED_FLAGS= LIBS="$(SLIBS)"
-
-uc:
- @make CC="/opt/i386-linux-uclibc/bin/i386-uclibc-gcc" EXTRA_FLAGS="-fno-pic -DUCLIBC" SHARED_FLAGS= LIBS="$(SLIBS)"
-
-tinyuc:
- @make CC="/opt/i386-linux-uclibc/usr/bin/gcc" EXTRA_FLAGS="-fno-pic -DLIBHD_TINY -DUCLIBC" SHARED_FLAGS= LIBS="$(SLIBS)"
-
-static:
- make SHARED_FLAGS= LIBS="$(SLIBS)"
-
-fullstatic: static
- $(CC) -static hwinfo.o $(LDFLAGS) $(SLIBS) -o hwinfo.static
- $(CC) -static hwscan.o $(LDFLAGS) $(SLIBS) -o hwscan.static
- strip -R .note -R .comment hwinfo.static
- strip -R .note -R .comment hwscan.static
-
-doc:
- @cd doc ; doxygen libhd.doxy
-
-install:
- install -d -m 755 $(DESTDIR)/sbin $(DESTDIR)/usr/sbin $(DESTDIR)$(LIBDIR) $(DESTDIR)$(ULIBDIR)\
- $(DESTDIR)/usr/include $(DESTDIR)/etc/init.d
- install -m 755 hwinfo $(DESTDIR)/usr/sbin
- install -m 755 hwscan hwscand hwscanqueue $(DESTDIR)/sbin
- install -m 755 -s src/ids/check_hd $(DESTDIR)/usr/sbin
- install -m 755 src/ids/convert_hd $(DESTDIR)/usr/sbin
- if [ -f $(LIBHD_SO) ] ; then \
- install $(LIBHD_SO) $(DESTDIR)$(LIBDIR) ; \
- ln -snf $(LIBHD_NAME) $(DESTDIR)$(LIBDIR)/$(LIBHD_SONAME) ; \
- ln -snf $(LIBDIR)/$(LIBHD_SONAME) $(DESTDIR)$(ULIBDIR)/$(LIBHD_BASE).so ; \
- else \
- install -m 644 $(LIBHD) $(DESTDIR)$(ULIBDIR) ; \
- fi
- install -m 644 src/hd/hd.h $(DESTDIR)/usr/include
- install -m 755 hwbootscan getsysinfo gen-hwcfg-disk.sh $(DESTDIR)/usr/sbin
- install -m 755 hwbootscan.rc $(DESTDIR)/etc/init.d/hwscan
- install -m 755 src/isdn/cdb/mk_isdnhwdb $(DESTDIR)/usr/sbin
- install -d -m 755 $(DESTDIR)/usr/share/hwinfo
- install -m 644 src/isdn/cdb/ISDN.CDB.txt $(DESTDIR)/usr/share/hwinfo
- install -m 644 src/isdn/cdb/ISDN.CDB.hwdb $(DESTDIR)/usr/share/hwinfo
-
+++ /dev/null
-# libhd/Makefile.common
-
-ARCH := $(shell uname -m)
-ifeq "$(ARCH)" "i486"
-ARCH := i386
-endif
-ifeq "$(ARCH)" "i586"
-ARCH := i386
-endif
-ifeq "$(ARCH)" "i686"
-ARCH := i386
-endif
-ifeq "$(ARCH)" "parisc"
-EXTRA_FLAGS := -fPIC $(EXTRA_FLAGS)
-endif
-
-LIBHD_VERSION := $(shell cat $(TOPDIR)/VERSION)
-LIBHD_MINOR_VERSION := $(shell cut -d . -f 2 $(TOPDIR)/VERSION)
-LIBHD_MAJOR_VERSION := $(shell cut -d . -f 1 $(TOPDIR)/VERSION)
-
-CC = gcc
-LD = ld
-CFLAGS = -Wall -O2 -pipe -g $(SHARED_FLAGS) $(EXTRA_FLAGS) -I/opt/i586-uClibc/include -I/opt/i586-uClibc/usr/include -I$(TOPDIR)/src/hd
-SHARED_FLAGS = -fPIC
-
-LDFLAGS = -Lsrc
-
-CFILES = $(wildcard *.c)
-OBJS = $(CFILES:.c=.o)
-LIBHD_BASE = libhd
-LIBHD = $(TOPDIR)/src/$(LIBHD_BASE).a
-LIBHD_SONAME = $(LIBHD_BASE).so.$(LIBHD_MAJOR_VERSION)
-LIBHD_NAME = $(LIBHD_BASE).so.$(LIBHD_VERSION)
-LIBHD_SO = $(TOPDIR)/src/$(LIBHD_NAME)
-LIBHD_D = $(TOPDIR)/src/.lib
-
-export CC TOPDIR CFLAGS LIBHD ARCH
-
-.PHONY: all distclean clean install subdirs
-
-%.o: %.c
- $(CC) -c $(CFLAGS) $<
-
-all: subdirs $(TARGETS)
-
-install: all
-
-ifneq "$(SUBDIRS)" ""
-subdirs:
- @for i in $(SUBDIRS) ; do make -C $$i $(MAKECMDGOALS) || exit ; done
-endif
-
-clean: subdirs
- @rm -rf $(OBJS) .depend $(CLEANFILES) *~
-
-distclean: subdirs
- @rm -rf $(OBJS) .depend $(CLEANFILES) $(DISTCLEANFILES) *~
-
-ifneq "$(CFILES)" ""
-ifeq ($(findstring $(MAKECMDGOALS), clean distclean),)
-.depend: $(CFILES)
- @$(CC) -MG -MM $(CFLAGS) $(CFILES) >$@
-
--include .depend
-endif
-endif
+++ /dev/null
-1. Usage
-========
-
- hwinfo [debug=deb_flag] [log=log_file] [list[+]=hw_item] [[+|-]probe_option1] [[+|-]probe_option2] ...
-
-Examples:
-
- hwinfo
- - probes for nearly everything
-
- hwinfo +all
- - probes for everything
-
- hwinfo log=hw_log
- - default probing, output is written to hw_log
- *** Please don't use "hwinfo >some_log 2>&1" to store the output into a
- log file! ***
-
- hwinfo -all +ide
- - probe for ide drives only
-
- hwinfo +all -isapnp -floppy
- - probe for everything *except* isapnp and floppies
-
-Some probing flags do not stand for complete modules but enable additional
-features; e.g. "pci.range" or "cdrom.info".
-
-Example:
- hwinfo -all +cdrom
- gives a list of all cdrom's
-
- hwinfo -all +cdrom.info
- additionally reads the iso9660 info
-
-To get a list of all supported probing flags, call 'hwinfo -all'.
-
-
-2. Environment variables/kernel cmdline parameters
-==================================================
-
-You can control the hardware probing using the environment variable
-"hwprobe" and the kernel cmdline parameters "hwprobe" & "x11".
-
-If "hwprobe" is set on the kernel cmdline, the environment variable
-"hwprobe" is ignored. Otherwise, the meaning of both is exactly the same.
-
- x11
- - Controls the X server/X version to prefer. It is either "3" or "4" or the
- name of the X server/X server module to use (XF3: server name without
- the leading "XF86_", XF4: the server module name).
-
- Examples:
- x11=3
- o prefer XFree86 3.x over 4.x (if possible)
-
- x11=SVGA
- o use the XF86_SVGA server (*** Even if the server does not
- support the card! ***)
-
- x11=nv
- o use the XF4 nv_drv.o driver (*** Even if the module does not
- support the card! ***)
-
- hwprobe
- - Controls which probing flags should *always* be set/cleared. (These
- settings *cannot* be overridden by command line switches.)
-
- Examples:
- hwprobe=-isapnp
- o *never* do any isapnp probing
-
- hwprobe=-braille,-modem
- o don't look for braille displays & modems
-
- - Allows you to add and remove hardware from the probing results. In this case
- the syntax is (-: remove, +: add at end of list, <nothing>: add at begin of
- list):
- hwprobe=[+-]<device_class>:<vendor_id>:<device_id>[:<unix_device_file>]
-
- <device_class>, <vendor_id> and <device_id> are device ids as used by libhd.
- See the output of hwinfo for examples. In connection with "-", you can use
- "*" as a placeholder that matches every id.
-
- Note: <unix_device_file> is optional.
-
- Note2: you cannot usefully *add* hardware that needs more info than that
- given by the hwprobe entry. Disks & floppies are notable examples.
- (But you can *remove* them.)
-
- Here is a typical hwinfo output for a mouse, with the relevant ids
- underlined (<device_class> is the combined base_class & sub_class),
- [see 1st example below]:
-
- 14: PS/2 00.0: 10500 PS/2 Mouse
- ^^^^^ --> <device_class>
- [Created at mouse.110]
- Vendor: s0200 "Unknown"
- ^^^^^ --> <vendor_id>
- Model: 0002 "Generic PS/2 Mouse"
- ^^^^ --> <device_id>
- Device File: /dev/psaux
- ^^^^^^^^^^ --> <unix_device_file>
- Driver Info #0:
- XFree86 Protocol: ps/2
- GPM Protocol: ps2
- Attached to: #8 (PS/2 Controller)
-
-
- Examples:
- hwprobe=+10500:s200:2:/dev/psaux
- o add a ps/2 mouse [at the end of the hardware list]
-
- hwprobe=10500:s200:2:/dev/psaux
- o add a ps/2 mouse [at the start of the hardware list, so it
- is our default mouse]
-
- hwprobe=+10b00:s5001:0:/dev/ttyS0
- o add a braille display connected to /dev/ttyS0
-
- hwprobe=-10500:s200:2:/dev/psaux
- o remove ps/2 mice attached to /dev/psaux
-
- hwprobe=-10500:s200:2
- o remove all ps/2 mice
-
- hwprobe=-10500:*:*
- o remove all ps/2 mice
-
- hwprobe=-*:*:*:/dev/hdc
- o remove /dev/hdc
-
- hwprobe=+401:1274:5000
- o add an ensoniq sound card
-
- Grafics cards are are slightly trickier:
-
- hwprobe=+300:1014:b7
- o add a Fire GL1 card
- Note: this way you'll get a multihead config. You'll probably
- rather want the following example.
-
- hwprobe=-300:*:*,+300:1014:b7
- o remove all graphics cards; then add a Fire GL1 card
-
- hwprobe=+400:121a:1
- o add a 3fx voodoo card (Note the class "400", not "300"!)
-
- - for more ids, see "src/ids/names.*" and "src/ids/drivers.*"
-
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <hd.h>
-
-int main(int argc, char **argv)
-{
- hd_data_t *hd_data;
- hd_t *hd;
-
- hd_data = calloc(1, sizeof *hd_data);
-
- hd = hd_list(hd_data, hw_scsi, 1, NULL);
-
- for(; hd; hd = hd->next) {
- hd_dump_entry(hd_data, hd, stdout)
- }
-
- hd_free_hd_list(hd); /* free it */
- hd_free_hd_data(hd_data);
-
- free(hd_data);
-
- return 0;
-}
-
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-
-#include <hd.h>
-
-int main(int argc, char **argv)
-{
- hd_data_t *hd_data;
- hd_t *hd;
- unsigned display_idx;
-
- hd_data = calloc(1, sizeof *hd_data);
-
- hd = hd_list(hd_data, hw_display, 1, NULL);
- display_idx = hd_display_adapter(hd_data);
-
- hd_dump_entry(hd_data, hd_get_device_by_idx(hd_data, display_idx), stdout)
-
- hd_free_hd_list(hd);
- hd_free_hd_data(hd_data);
-
- free(hd_data);
-
- return 0;
-}
-
+++ /dev/null
-</body></html>
+++ /dev/null
-.\" Michal Svec <msvec@suse.cz>
-.\"
-.\" Process this file with
-.\" groff -man -Tascii foo.1
-.\"
-.\"
-.TH HWINFO 8 "January 2003" "hwinfo" "System configuration"
-.\"
-.\"
-.SH NAME
-hwinfo \- probe for hardware
-.\"
-.\"
-.SH SYNOPSIS
-.B hwinfo [
-.I options
-.B ]
-.\"
-.\"
-.SH DESCRIPTION
-.B hwinfo
-is used to probe for the hardware present in the system. It can be used
-to generate a system overview log which can be later used for support.
-.\"
-.\"
-.SH OPTIONS
-.\"
-.TP
-.BI --debug " " level
-Set debug
-.B level.
-The debug info is shown only in the log file. If you specify a log file,
-the debug level is implicitly set to a reasonable value.
-.\"
-.TP
-.BI --dump-db " " n
-Dump hardware data base,
-.B n
-is either
-.B 0
-for the external data base, or
-.B 1
-for the internal data base.
-.\"
-.TP
-.BI --help
-Print a usage and exit.
-.\"
-.TP
-.BI --log " " logfile
-Write info to
-.B logfile.
-.\"
-.TP
-.BI --short
-Just a short listing.
-.\"
-.TP
-.BI --version
-Show libhd version.
-.\"
-.TP
-.BI --<hwitem>
-Probe for the particular hardware item. Available hardware items are:
-.B all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu,
-.B disk, dsl, dvb, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn,
-.B joystick, keyboard, memory, modem, monitor, mouse, netcard, network,
-.B partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp,
-.B sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan,
-and
-.B zip.
-.\"
-.\"
-.SH FILES
-.B /var/lib/hardware/*
-.\"
-.\"
-.SH BUGS
-Not all hardware can be detected.
-.\"
-.\"
-.SH AUTHOR
-.nf
-Steffen Winterfeldt <snwint@suse.de> - hwinfo
-Michal Svec <msvec@suse.cz> - manual page
-.fi
-.\"
-.\"
-.SH "SEE ALSO"
-Documentation in /usr/share/doc/packages/hwinfo.
-.\"
-.\" EOF
+++ /dev/null
-/*! \mainpage libhd documentation
-
-<h2>Introduction</h2>
-
-libhd is a hardware detection lib.
-
-<h2>Changes</h2>
-
-\ref libhd_5_12
-
-<h2>Examples</h2>
-
-\ref example1
-
-\ref example2
-
-*/
-
-
-/*! \page examples Examples
-
-\ref example1
-
-\ref example2
-
-<hr>
-
-\subsection example1 Get list of SCSI controllers
-
-\include example1.c
-
-<hr>
-
-\subsection example2 Get primary display controller
-
-\include example2.c
-
-*/
-
-/*! \page changes Changes
-
-\ref libhd_5_12
-
-<hr>
-
-\subsection libhd_5_12 libhd-5.12
-
-<ul>
-
- <li>changes in \ref hd_t
-
- <ul>
-
- <li>\ref hd_t::bus "bus" is now a struct, use \ref hd_t::bus "bus.id" instead.
-
- <li>\ref hd_t::base_class "base_class" is now a struct, use \ref hd_t::base_class "base_class.id" instead.
-
- <li>\ref hd_t::sub_class "sub_class" is now a struct, use \ref hd_t::sub_class "sub_class.id" instead.
-
- <li>\ref hd_t::prog_if "prog_if" is now a struct, use \ref hd_t::prog_if "prog_if.id" instead.
-
- <li>\ref hd_t::vendor "vendor" is a struct replacing vend and vend_name.
- Use \ref hd_t::vendor "vendor.id" and \ref hd_t::vendor "vendor.name" now.
-
- <li>\ref hd_t::device "device" is a struct replacing dev and dev_name.
- Use \ref hd_t::device "device.id" and \ref hd_t::device "device.name" now.
-
- <li>\ref hd_t::sub_vendor "sub_vendor" is a struct replacing sub_vend and sub_vend_name.
- Use \ref hd_t::sub_vendor "sub_vendor.id" and \ref hd_t::sub_vendor "sub_vendor.name" now.
-
- <li>\ref hd_t::sub_device "sub_device" is a struct replacing sub_dev and sub_dev_name.
- Use \ref hd_t::sub_device "sub_device.id" and \ref hd_t::sub_device "sub_device.name" now.
-
- <li>\ref hd_t::revision "revision" is a struct replacing rev and rev_name.
- Use \ref hd_t::revision "revision.id" and \ref hd_t::revision "revision.name" now.
-
- <li>\ref hd_t::compat_vendor "compat_vendor" is a struct replacing compat_vend.
- Use \ref hd_t::compat_vendor "compat_vendor.id" now.
-
- <li>\ref hd_t::compat_device "compat_device" is a struct replacing compat_dev.
- Use \ref hd_t::compat_device "compat_device.id" now.
-
- </ul>
-
- <li>interface functions removed
-
- <ul>
-
- <li>hd_bus_name is gone. Use \ref hd_t::bus "bus.name" instead.
-
- <li>hd_class_name is gone. Use \ref hd_t::base_class "base_class.name",
- \ref hd_t::sub_class "sub_class.name" or \ref hd_t::prog_if "prog_if.name" instead.
-
- <li>hd_vendor_name is gone. Use \ref hd_t::vendor "vendor.name" instead.
-
- <li>hd_device_name is gone. Use \ref hd_t::device "device.name" instead.
-
- <li>hd_sub_device_name is gone. Use \ref hd_t::sub_device "sub_device.name" instead.
-
- <li>hd_find_device_by_name is gone.
-
- </ul>
-
-</ul>
-
-<hr>
-
-*/
-
+++ /dev/null
-# Doxyfile 1.2.13.1
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# General configuration options
-#---------------------------------------------------------------------------
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = libhd
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER = 5.0
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY = libhd
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Brazilian, Chinese, Croatian, Czech, Danish, Dutch, Finnish, French,
-# German, Greek, Hungarian, Italian, Japanese, Korean, Norwegian, Polish,
-# Portuguese, Romanian, Russian, Slovak, Slovene, Spanish and Swedish.
-
-OUTPUT_LANGUAGE = English
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = YES
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = YES
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these class will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all inherited
-# members of a class in the documentation of that class as if those members were
-# ordinary class members. Constructors, destructors and assignment operators of
-# the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. It is allowed to use relative paths in the argument list.
-
-STRIP_FROM_PATH =
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower case letters. If set to YES upper case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# users are adviced to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like the Qt-style comments (thus requiring an
-# explict @brief command for a brief description.
-
-JAVADOC_AUTOBRIEF = YES
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# reimplements.
-
-INHERIT_DOCS = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consist of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C.
-# For instance some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = YES
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text.
-
-WARN_FORMAT =
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = libhd.doc ../src
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx *.hpp
-# *.h++ *.idl
-
-FILE_PATTERNS = *.c *.h
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = YES
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE = ../src/ids
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-
-EXCLUDE_PATTERNS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH = .
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS = *.c
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-
-INPUT_FILTER =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse.
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# If the REFERENCED_BY_RELATION tag is set to YES (the default)
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = YES
-
-# If the REFERENCES_RELATION tag is set to YES (the default)
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT =
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER = footer.html
-
-# The HTML_STYLESHEET tag can be used to specify a user defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compressed HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the Html help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the GENERATE_TREEVIEW tag is set to YES, a side panel will be
-# generated containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript and frames is required (for instance Mozilla, Netscape 4.0+,
-# or Internet explorer 4.0+). Note that for large projects the tree generation
-# can take a very long time. In such cases it is better to disable this feature.
-# Windows users are probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT =
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = NO
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = NO
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimised for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT =
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assigments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT =
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION =
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_XML = NO
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_PREDEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_PREDEF_ONLY tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line and do not end with a semicolon. Such function macros are typically
-# used for boiler-plate code, and will confuse the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::addtions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tagfiles.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in Html, RTF and LaTeX) for classes with base or
-# super classes. Setting the tag to NO turns the diagrams off. Note that this
-# option is superceded by the HAVE_DOT option below. This is only a fallback. It is
-# recommended to install and use dot, since it yield more powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = NO
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = YES
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found on the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT = 1024
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermedate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
-
-#---------------------------------------------------------------------------
-# Configuration::addtions related to the search engine
-#---------------------------------------------------------------------------
-
-# The SEARCHENGINE tag specifies whether or not a search engine should be
-# used. If set to NO the values of all tags below this one will be ignored.
-
-SEARCHENGINE = NO
-
-# The CGI_NAME tag should be the name of the CGI script that
-# starts the search engine (doxysearch) with the correct parameters.
-# A script with this name will be generated by doxygen.
-
-CGI_NAME =
-
-# The CGI_URL tag should be the absolute URL to the directory where the
-# cgi binaries are located. See the documentation of your http daemon for
-# details.
-
-CGI_URL =
-
-# The DOC_URL tag should be the absolute URL to the directory where the
-# documentation is located. If left blank the absolute path to the
-# documentation, with file:// prepended to it, will be used.
-
-DOC_URL =
-
-# The DOC_ABSPATH tag should be the absolute path to the directory where the
-# documentation is located. If left blank the directory on the local machine
-# will be used.
-
-DOC_ABSPATH =
-
-# The BIN_ABSPATH tag must point to the directory where the doxysearch binary
-# is installed.
-
-BIN_ABSPATH =
-
-# The EXT_DOC_PATHS tag can be used to specify one or more paths to
-# documentation generated for other projects. This allows doxysearch to search
-# the documentation for these projects as well.
-
-EXT_DOC_PATHS =
+++ /dev/null
-#!/bin/bash
-#
-# gen-hwcfg-disk.sh
-#
-# Generates hwcfg file for all configured disks
-#
-
-if [ -x /sbin/ata_identify ]; then
- ATA_ID=/sbin/ata_identify
-elif [ -x /lib/klibc/bin/ata_identify ]; then
- ATA_ID=/lib/klibc/bin/ata_identify
-else
- echo "ata_identify not found, please install udev"
- exit 1
-fi
-
-hwcfg=/etc/sysconfig/hardware
-
-if [ ! -d "$hwcfg" ]; then
- echo "No hardware configuration directory found"
- exit 1
-fi
-
-# IDE disks first
-for ifname in /sys/block/hd*; do
- id=$($ATA_ID /dev/${ifname##*/} 2> /dev/null)
- if [ $? -eq 0 ]; then
- filename="SATA_$id"
- echo "Generate hwcfg file for $filename"
- echo "DEVICE=${ifname##*/}" > ${hwcfg}/hwcfg-disk-id-${filename}
- fi
-done
-
-# SCSI disks next
-for ifname in /sys/block/sd*; do
- if [ -d $ifname/device ]; then
- read vendor < $ifname/device/vendor
- if [ "$vendor" = "ATA" ]; then
- # We need page 0x80 to get the serial number
- page="-p 0x80"
- else
- page=
- fi
- scsi_id -g $page -s ${ifname#/sys} 2> /dev/null | while read vendor model serial; do
- filename="${vendor}_${model}_${serial}"
- echo "Generate hwcfg file for $filename"
- echo "DEVICE=${ifname##*/}" > ${hwcfg}/hwcfg-disk-id-${filename}
- done
- fi
-done
+++ /dev/null
-#! /bin/sh
-
-if [ "$1" ] ; then
- cat <<EOF
-Usage: getsysinfo
-Collect some system data that are useful for debugging
-hardware detection bugs.
-EOF
- exit 0
-fi
-
-# collect some system data
-
-dir=`mktemp -d /tmp/getsysinfo.XXXXXXXXXX`
-
-[ -d "$dir" ] || exit 1
-
-host=`hostname`
-[ "$host" ] || host=xxx
-
-mkdir -p "$dir/$host"
-
-for i in \
- /proc/bus/input \
- /proc/cpuinfo \
- /proc/device-tree \
- /proc/devices \
- /proc/dma \
- /proc/driver/nvram \
- /proc/fb \
- /proc/iSeries \
- /proc/ide \
- /proc/interrupts \
- /proc/iomem \
- /proc/ioports \
- /proc/meminfo \
- /proc/modules \
- /proc/net/dev \
- /proc/partitions \
- /proc/scsi \
- /proc/sys/dev/cdrom/info \
- /proc/sys/dev/parport \
- /proc/tty \
- /proc/version \
- /sys \
- /var/log/boot.msg
-do
- if [ -e "$i" ] ; then
- echo "$i"
- cp -a --parents "$i" "$dir/$host" 2>/dev/null
- chmod -R u+w,a+r,a+X "$dir/$host"
- fi
-done
-
-echo /proc/mounts
-cp --parents /proc/mounts "$dir/$host"
-
-echo -e "\n------ dmesg start ------\n" >>"$dir/$host/var/log/boot.msg"
-dmesg >>"$dir/$host/var/log/boot.msg"
-
-file="$host.tar.gz"
-tar -C "$dir" -zcf "$dir/$file" "$host"
-
-rm -f "/tmp/$file"
-
-if [ -e "/tmp/$file" ] ; then
- echo "Warning: /tmp/$file exists, no info written"\!
- rm -rf "$dir"
- exit 1
-fi
-
-ln -nf "$dir/$file" "/tmp/$file"
-
-rm -rf "$dir"
-
-echo -e "\nSystem data written to: /tmp/$file"
-
+++ /dev/null
-#!/bin/bash
-
-rm -f /var/lib/hardware/LOCK
-
-/sbin/hwscan --silent --boot --fast --isapnp --pci --block --floppy --mouse
-
-#
-# create icons for static drives
-#
-if [ -e /etc/hotplug/hotplug.subfs.functions ]; then
- . /etc/hotplug/hotplug.subfs.functions
- coldplug_create_subfs
-fi
-
-exit 0
+++ /dev/null
-#! /bin/sh
-# Copyright (c) 2002 SuSE GmbH Nuernberg, Germany. All rights reserved.
-#
-# Author: Marcus Meissner <meissner@suse.de>
-#
-# /etc/init.d/hwscan
-#
-# System startup script for boot hw probing and reconfiguration
-#
-### BEGIN INIT INFO
-# Provides: hwscan
-# Required-Start:
-# X-UnitedLinux-Should-Start: hotplug kbd
-# Required-Stop:
-# Default-Start: 2 3 5
-# Default-Stop:
-# Description: Hardware scan and reconfiguration on boot.
-### END INIT INFO
-
-HWBOOTSCAN_BIN=/usr/sbin/hwbootscan
-test -x $HWBOOTSCAN_BIN || exit 5
-
-# Shell functions sourced from /etc/rc.status:
-# rc_check check and set local and overall rc status
-# rc_status check and set local and overall rc status
-# rc_status -v ditto but be verbose in local rc status
-# rc_status -v -r ditto and clear the local rc status
-# rc_failed set local and overall rc status to failed
-# rc_reset clear local rc status (overall remains)
-# rc_exit exit appropriate to overall rc status
-. /etc/rc.status
-
-# First reset status of this service
-rc_reset
-
-# Return values acc. to LSB for all commands but status:
-# 0 - success
-# 1 - misc error
-# 2 - invalid or excess args
-# 3 - unimplemented feature (e.g. reload)
-# 4 - insufficient privilege
-# 5 - program not installed
-# 6 - program not configured
-# 7 - program is not running
-#
-# Note that starting an already running service, stopping
-# or restarting a not-running service as well as the restart
-# with force-reload (in case signalling is not supported) are
-# considered a success.
-
-case "$1" in
- start)
- echo -n "Starting hardware scan on boot"
- rc_splash "YaST"
- [ -n "$REDIRECT" ] && exec 0<> $REDIRECT 1>&0 2>&0
- $HWBOOTSCAN_BIN
- rc_check
- rc_status -v
- ;;
- stop)
- rc_check
- ;;
- restart)
- ## Stop the service and regardless of whether it was
- ## running or not, start it again.
- # Remember status and be quiet
- rc_check
- ;;
- force-reload)
- ## Signal the daemon to reload its config. Most daemons
- ## do this on signal 1 (SIGHUP).
- ## If it does not support it, restart.
- # Remember status and be quiet
- rc_check
- ;;
- reload)
- ## Like force-reload, but if daemon does not support
- ## signalling, do nothing (!)
-
- # If it supports signalling:
- rc_reset
- ;;
- status)
- ## Check status with checkproc(8), if process is running
- ## checkproc will return with exit status 0.
-
- # Status has a slightly different for the status command:
- # 0 - service running
- # 1 - service dead, but /var/run/ pid file exists
- # 2 - service dead, but /var/lock/ lock file exists
- # 3 - service not running
-
- rc_reset
- ;;
- *)
- echo "Usage: $0 {start|stop|restart|force-reload|reload|status}"
- exit 1
- ;;
-esac
-rc_exit
-
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <getopt.h>
-#include <errno.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include "hd.h"
-#include "hd_int.h"
-
-static int get_probe_flags(int, char **, hd_data_t *);
-static void progress2(char *, char *);
-
-// ##### temporary solution, fix it later!
-str_list_t *read_file(char *file_name, unsigned start_line, unsigned lines);
-str_list_t *search_str_list(str_list_t *sl, char *str);
-str_list_t *add_str_list(str_list_t **sl, char *str);
-char *new_str(const char *);
-
-static unsigned deb = 0;
-static char *log_file = "";
-static char *list = NULL;
-static int listplus = 0;
-
-static int test = 0;
-static int is_short = 0;
-
-static char *showconfig = NULL;
-static char *saveconfig = NULL;
-static hd_hw_item_t hw_item[100] = { };
-static int hw_items = 0;
-
-int braille_install_info(hd_data_t *hd_data);
-int x11_install_info(hd_data_t *hd_data);
-int oem_install_info(hd_data_t *hd_data);
-void dump_packages(hd_data_t *hd_data);
-
-void do_hw(hd_data_t *hd_data, FILE *f, hd_hw_item_t hw_item);
-void do_hw_multi(hd_data_t *hd_data, FILE *f, hd_hw_item_t *hw_items);
-void do_short(hd_data_t *hd_data, hd_t *hd, FILE *f);
-void do_test(hd_data_t *hd_data);
-void help(void);
-void dump_db_raw(hd_data_t *hd_data);
-void dump_db(hd_data_t *hd_data);
-void do_chroot(hd_data_t *hd_data, char *dir);
-void ask_db(hd_data_t *hd_data, char *query);
-void get_mapping(hd_data_t *hd_data);
-
-
-struct {
- unsigned db_idx;
- unsigned separate:1;
- char *root;
-} opt;
-
-struct option options[] = {
- { "special", 1, NULL, 1 },
- { "help", 0, NULL, 'h' },
- { "debug", 1, NULL, 'd' },
- { "version", 0, NULL, 400 },
- { "log", 1, NULL, 'l' },
- { "packages", 0, NULL, 'p' },
- { "test", 0, NULL, 300 },
- { "format", 1, NULL, 301 },
- { "show-config", 1, NULL, 302 },
- { "save-config", 1, NULL, 303 },
- { "short", 0, NULL, 304 },
- { "fast", 0, NULL, 305 },
- { "dump-db", 1, NULL, 306 },
- { "dump-db-raw", 1, NULL, 307 },
- { "separate", 0, NULL, 308 },
- { "root", 1, NULL, 309 },
- { "db", 1, NULL, 310 },
- { "only", 1, NULL, 311 },
- { "listmd", 0, NULL, 312 },
- { "map", 0, NULL, 313 },
- { "kernel-version", 1, NULL, 314 },
- { "cdrom", 0, NULL, 1000 + hw_cdrom },
- { "floppy", 0, NULL, 1000 + hw_floppy },
- { "disk", 0, NULL, 1000 + hw_disk },
- { "network", 0, NULL, 1000 + hw_network },
- { "display", 0, NULL, 1000 + hw_display },
- { "gfxcard", 0, NULL, 1000 + hw_display },
- { "framebuffer", 0, NULL, 1000 + hw_framebuffer },
- { "monitor", 0, NULL, 1000 + hw_monitor },
- { "camera", 0, NULL, 1000 + hw_camera },
- { "mouse", 0, NULL, 1000 + hw_mouse },
- { "joystick", 0, NULL, 1000 + hw_joystick },
- { "keyboard", 0, NULL, 1000 + hw_keyboard },
- { "chipcard", 0, NULL, 1000 + hw_chipcard },
- { "sound", 0, NULL, 1000 + hw_sound },
- { "isdn", 0, NULL, 1000 + hw_isdn },
- { "modem", 0, NULL, 1000 + hw_modem },
- { "storage-ctrl", 0, NULL, 1000 + hw_storage_ctrl },
- { "storage_ctrl", 0, NULL, 1000 + hw_storage_ctrl },
- { "netcard", 0, NULL, 1000 + hw_network_ctrl },
- { "netcards", 0, NULL, 1000 + hw_network_ctrl }, // outdated, just kept for comaptibility
- { "network-ctrl", 0, NULL, 1000 + hw_network_ctrl },
- { "network_ctrl", 0, NULL, 1000 + hw_network_ctrl },
- { "printer", 0, NULL, 1000 + hw_printer },
- { "tv", 0, NULL, 1000 + hw_tv },
- { "dvb", 0, NULL, 1000 + hw_dvb },
- { "scanner", 0, NULL, 1000 + hw_scanner },
- { "braille", 0, NULL, 1000 + hw_braille },
- { "sys", 0, NULL, 1000 + hw_sys },
- { "bios", 0, NULL, 1000 + hw_bios },
- { "cpu", 0, NULL, 1000 + hw_cpu },
- { "partition", 0, NULL, 1000 + hw_partition },
- { "usb-ctrl", 0, NULL, 1000 + hw_usb_ctrl },
- { "usb_ctrl", 0, NULL, 1000 + hw_usb_ctrl },
- { "usb", 0, NULL, 1000 + hw_usb },
- { "pci", 0, NULL, 1000 + hw_pci },
- { "isapnp", 0, NULL, 1000 + hw_isapnp },
- { "scsi", 0, NULL, 1000 + hw_scsi },
- { "ide", 0, NULL, 1000 + hw_ide },
- { "bridge", 0, NULL, 1000 + hw_bridge },
- { "hub", 0, NULL, 1000 + hw_hub },
- { "memory", 0, NULL, 1000 + hw_memory },
- { "manual", 0, NULL, 1000 + hw_manual },
- { "pcmcia", 0, NULL, 1000 + hw_pcmcia },
- { "pcmcia_ctrl", 0, NULL, 1000 + hw_pcmcia_ctrl },
- { "ieee1394", 0, NULL, 1000 + hw_ieee1394 },
- { "ieee1394_ctrl", 0, NULL, 1000 + hw_ieee1394_ctrl },
- { "firewire", 0, NULL, 1000 + hw_ieee1394 },
- { "firewire_ctrl", 0, NULL, 1000 + hw_ieee1394_ctrl },
- { "hotplug", 0, NULL, 1000 + hw_hotplug },
- { "hotplug_ctrl", 0, NULL, 1000 + hw_hotplug_ctrl },
- { "zip", 0, NULL, 1000 + hw_zip },
- { "pppoe", 0, NULL, 1000 + hw_pppoe },
- { "dsl", 0, NULL, 1000 + hw_dsl },
- { "wlan", 0, NULL, 1000 + hw_wlan },
- { "redasd", 0, NULL, 1000 + hw_redasd },
- { "block", 0, NULL, 1000 + hw_block },
- { "tape", 0, NULL, 1000 + hw_tape },
- { "vbe", 0, NULL, 1000 + hw_vbe },
- { "bluetooth", 0, NULL, 1000 + hw_bluetooth },
- { "all", 0, NULL, 2000 },
- { "reallyall", 0, NULL, 2001 },
- { "smp", 0, NULL, 2002 },
- { "arch", 0, NULL, 2003 },
- { "uml", 0, NULL, 2004 },
- { }
-};
-
-
-/*
- * Just scan the hardware and dump all info.
- */
-int main(int argc, char **argv)
-{
- hd_data_t *hd_data;
- hd_t *hd;
- FILE *f = NULL;
- int i;
- unsigned first_probe = 1;
-
- hd_data = calloc(1, sizeof *hd_data);
- hd_data->progress = isatty(1) ? progress2 : NULL;
- hd_data->debug=~(HD_DEB_DRIVER_INFO | HD_DEB_HDDB);
-
- for(i = 0; i < argc; i++) {
- if(strstr(argv[i], "--") == argv[i]) break;
- }
-
- if(i != argc) {
- /* new style interface */
-
- opterr = 0;
-
- while((i = getopt_long(argc, argv, "hd:l:p", options, NULL)) != -1) {
- switch(i) {
- case 1:
- if(!strcmp(optarg, "braille")) {
- braille_install_info(hd_data);
- }
- else if(!strcmp(optarg, "x11")) {
- x11_install_info(hd_data);
- }
- else if(!strcmp(optarg, "oem")) {
- oem_install_info(hd_data);
- }
- else {
- help();
- return 1;
- }
- break;
-
- case 'd':
- hd_data->debug = strtol(optarg, NULL, 0);
- break;
-
- case 'l':
- log_file = optarg;
- break;
-
- case 'p':
- dump_packages(hd_data);
- break;
-
- case 300:
- do_test(hd_data);
- break;
-
- case 301:
- hd_data->flags.dformat = strtol(optarg, NULL, 0);
- break;
-
- case 302:
- showconfig = optarg;
- break;
-
- case 303:
- saveconfig = optarg;
- break;
-
- case 304:
- is_short = 1;
- break;
-
- case 305:
- hd_data->flags.fast = 1;
- break;
-
- case 306:
- opt.db_idx = strtoul(optarg, NULL, 0);
- dump_db(hd_data);
- break;
-
- case 307:
- opt.db_idx = strtoul(optarg, NULL, 0);
- dump_db_raw(hd_data);
- break;
-
- case 308:
- /* basically for debugging */
- opt.separate = 1;
- break;
-
- case 309:
- opt.root = optarg;
- break;
-
- case 310:
- ask_db(hd_data, optarg);
- break;
-
- case 311:
- if(*optarg) add_str_list(&hd_data->only, optarg);
- break;
-
- case 312:
- hd_data->flags.list_md = 1;
- break;
-
- case 313:
- get_mapping(hd_data);
- break;
-
- case 314:
- if(*optarg) setenv("LIBHD_KERNELVERSION", optarg, 1);
- break;
-
- case 400:
- printf("%s\n", hd_version());
- break;
-
- case 1000 ... 1100:
- if(hw_items < (int) (sizeof hw_item / sizeof *hw_item) - 1)
- hw_item[hw_items++] = i - 1000;
- break;
-
- case 2000:
- case 2001:
- case 2002:
- case 2003:
- case 2004:
- if(hw_items < (int) (sizeof hw_item / sizeof *hw_item) - 1)
- hw_item[hw_items++] = i;
- break;
-
- default:
- help();
- return 0;
- }
- }
-
- if(!hw_items && is_short) hw_item[hw_items++] = 2000; /* all */
-
- if(hw_items >= 0 || showconfig || saveconfig) {
- if(*log_file) {
- if(!strcmp(log_file, "-")) {
- f = fdopen(1, "w");
- }
- else {
- f = fopen(log_file, "w+");
- }
- }
-
- if(opt.root) do_chroot(hd_data, opt.root);
-
- if(opt.separate || hw_items <= 1) {
- for(i = 0; i < hw_items; i++) {
- if(i) fputc('\n', f ? f : stdout);
- do_hw(hd_data, f, hw_item[i]);
- }
- }
- else {
- hw_item[hw_items] = 0;
- do_hw_multi(hd_data, f, hw_item);
- }
-
-#ifndef LIBHD_TINY
- if(showconfig) {
- hd = hd_read_config(hd_data, showconfig);
- if(hd) {
- hd_dump_entry(hd_data, hd, f ? f : stdout);
- hd = hd_free_hd_list(hd);
- }
- else {
- fprintf(f ? f : stdout, "No config data: %s\n", showconfig);
- }
- }
-
- if(saveconfig) {
- for(hd = hd_data->hd; hd; hd = hd->next) {
- if(!strcmp(hd->unique_id, saveconfig)) {
- i = hd_write_config(hd_data, hd);
- fprintf(f ? f : stdout, "%s: %s\n",
- saveconfig,
- i ? "Error writing config data" : "config saved"
- );
- break;
- }
- }
- if(!hd) {
- fprintf(f ? f : stdout, "No such hardware: %s\n", saveconfig);
- }
- }
-#endif
-
- if(f) fclose(f);
- }
-
- hd_free_hd_data(hd_data);
- free(hd_data);
-
- return 0;
- }
-
- /* old style interface */
-
- argc--; argv++;
-
- if(argc == 1 && !strcmp(*argv, "-h")) {
- help();
- return 0;
- }
-
- do {
- if(first_probe) /* only for the 1st probing */
- hd_set_probe_feature(hd_data, pr_default);
- else {
- hd_clear_probe_feature(hd_data, pr_all);
- }
-
- if((i = get_probe_flags(argc, argv, hd_data)) < 0) return 1;
- deb = hd_data->debug;
- argc -= i; argv += i;
-
- if(opt.root && first_probe) do_chroot(hd_data, opt.root);
-
- hd_scan(hd_data);
- if(hd_data->progress) printf("\r%64s\r", "");
-
- first_probe = 0;
- } while(argc);
-
- if(*log_file) {
- if(!strcmp(log_file, "-")) {
- f = fdopen(1, "w");
- }
- else {
- f = fopen(log_file, "w+");
- }
- }
-
- if((hd_data->debug & HD_DEB_SHOW_LOG) && hd_data->log) {
- if(*log_file) {
- fprintf(f ? f : stdout,
- "============ start hardware log ============\n"
- );
- }
- fprintf(f ? f : stdout,
- "============ start debug info ============\n%s=========== end debug info ============\n",
- hd_data->log
- );
- }
-
- for(hd = hd_data->hd; hd; hd = hd->next) {
- hd_dump_entry(hd_data, hd, f ? f : stdout);
- }
-
- if(*log_file) {
- fprintf(f ? f : stdout,
- "============ end hardware log ============\n"
- );
- }
-
- i = -1;
- if(list) {
- if(!strcmp(list, "cdrom")) i = hw_cdrom;
- if(!strcmp(list, "disk")) i = hw_disk;
- if(!strcmp(list, "floppy")) i = hw_floppy;
- if(!strcmp(list, "network")) i = hw_network;
- if(!strcmp(list, "display")) i = hw_display;
- if(!strcmp(list, "monitor")) i = hw_monitor;
- if(!strcmp(list, "mouse")) i = hw_mouse;
- if(!strcmp(list, "keyboard")) i = hw_keyboard;
- if(!strcmp(list, "sound")) i = hw_sound;
- if(!strcmp(list, "isdn")) i = hw_isdn;
- if(!strcmp(list, "dsl")) i = hw_dsl;
- if(!strcmp(list, "modem")) i = hw_modem;
- if(!strcmp(list, "storage_ctrl")) i = hw_storage_ctrl;
- if(!strcmp(list, "network_ctrl")) i = hw_network_ctrl;
- if(!strcmp(list, "netcards")) i = hw_network_ctrl;
- if(!strcmp(list, "printer")) i = hw_printer;
- if(!strcmp(list, "tv")) i = hw_tv;
- if(!strcmp(list, "scanner")) i = hw_scanner;
- if(!strcmp(list, "braille")) i = hw_braille;
- if(!strcmp(list, "sys")) i = hw_sys;
- if(!strcmp(list, "cpu")) i = hw_cpu;
-
- if(i >= 0) {
- hd = hd_list(hd_data, i, listplus, NULL);
- printf("\n");
- printf("-- %s list --\n", list);
- for(; hd; hd = hd->next) hd_dump_entry(hd_data, hd, stdout);
- printf("-- %s list end --\n", list);
- hd = hd_free_hd_list(hd);
- }
- }
-
- if(f) fclose(f);
-
- hd_free_hd_data(hd_data);
- free(hd_data);
-
- return 0;
-}
-
-
-void do_hw(hd_data_t *hd_data, FILE *f, hd_hw_item_t hw_item)
-{
- hd_t *hd, *hd0;
- int smp = -1, uml = 0, i;
- char *s, *t;
- enum boot_arch b_arch;
- enum cpu_arch c_arch;
-
- hd0 = NULL;
-
- switch(hw_item) {
- case 2002:
- smp = hd_smp_support(hd_data);
- break;
-
- case 2000:
- case 2001:
- case 2003:
- i = -1;
- switch((int) hw_item) {
- case 2000: i = pr_default; break;
- case 2001: i = pr_all; break;
- case 2003: i = pr_cpu; break;
- }
- if(i != -1) {
- hd_clear_probe_feature(hd_data, pr_all);
- hd_set_probe_feature(hd_data, i);
- hd_scan(hd_data);
- hd0 = hd_data->hd;
- }
- break;
-
- case 2004:
- uml = hd_is_uml(hd_data);
- break;
-
- default:
- hd0 = hd_list(hd_data, hw_item, 1, NULL);
- }
-
- if(hd_data->progress) {
- printf("\r%64s\r", "");
- fflush(stdout);
- }
-
- if(f) {
- if((hd_data->debug & HD_DEB_SHOW_LOG) && hd_data->log) {
- fprintf(f,
- "============ start hardware log ============\n"
- );
- fprintf(f,
- "============ start debug info ============\n%s=========== end debug info ============\n",
- hd_data->log
- );
- }
-
- for(hd = hd_data->hd; hd; hd = hd->next) {
- hd_dump_entry(hd_data, hd, f);
- }
-
- fprintf(f,
- "============ end hardware log ============\n"
- );
- }
-
- if(hw_item == 2002) {
- fprintf(f ? f : stdout,
- "SMP support: %s",
- smp < 0 ? "unknown" : smp > 0 ? "yes" : "no"
- );
- if(smp > 0) fprintf(f ? f : stdout, " (%u cpus)", smp);
- fprintf(f ? f : stdout, "\n");
- }
- else if(hw_item == 2003) {
- c_arch = hd_cpu_arch(hd_data);
- b_arch = hd_boot_arch(hd_data);
-
- s = t = "Unknown";
- switch(c_arch) {
- case arch_unknown:
- break;
- case arch_intel:
- s = "X86 (32)";
- break;
- case arch_alpha:
- s = "Alpha";
- break;
- case arch_sparc:
- s = "Sparc (32)";
- break;
- case arch_sparc64:
- s = "UltraSparc (64)";
- break;
- case arch_ppc:
- s = "PowerPC";
- break;
- case arch_ppc64:
- s = "PowerPC (64)";
- break;
- case arch_68k:
- s = "68k";
- break;
- case arch_ia64:
- s = "IA-64";
- break;
- case arch_s390:
- s = "S390";
- break;
- case arch_s390x:
- s = "S390x";
- break;
- case arch_arm:
- s = "ARM";
- break;
- case arch_mips:
- s = "MIPS";
- break;
- case arch_x86_64:
- s = "X86_64";
- break;
- }
-
- switch(b_arch) {
- case boot_unknown:
- break;
- case boot_lilo:
- t = "lilo";
- break;
- case boot_milo:
- t = "milo";
- break;
- case boot_aboot:
- t = "aboot";
- break;
- case boot_silo:
- t = "silo";
- break;
- case boot_ppc:
- t = "ppc";
- break;
- case boot_elilo:
- t = "elilo";
- break;
- case boot_s390:
- t = "s390";
- break;
- case boot_mips:
- t = "mips";
- break;
- case boot_grub:
- t = "grub";
- break;
- }
-
- fprintf(f ? f : stdout, "Arch: %s/%s\n", s, t);
- }
- else if(hw_item == 2004) {
- fprintf(f ? f : stdout, "UML: %s\n", uml ? "yes" : "no");
- }
- else {
- if(is_short) {
- /* always to stdout */
- do_short(hd_data, hd0, stdout);
- if(f) do_short(hd_data, hd0, f);
- }
- else {
- for(hd = hd0; hd; hd = hd->next) {
- hd_dump_entry(hd_data, hd, f ? f : stdout);
- }
- }
- }
-
- if(hw_item == hw_display && hd0) {
- fprintf(f ? f : stdout, "\nPrimary display adapter: #%u\n", hd_display_adapter(hd_data));
- }
-
- if(hd0 != hd_data->hd) hd_free_hd_list(hd0);
-}
-
-
-void do_hw_multi(hd_data_t *hd_data, FILE *f, hd_hw_item_t *hw_items)
-{
- hd_t *hd, *hd0;
-
- hd0 = hd_list2(hd_data, hw_items, 1);
-
- if(hd_data->progress) {
- printf("\r%64s\r", "");
- fflush(stdout);
- }
-
- if(f) {
- if((hd_data->debug & HD_DEB_SHOW_LOG) && hd_data->log) {
- fprintf(f,
- "============ start hardware log ============\n"
- );
- fprintf(f,
- "============ start debug info ============\n%s=========== end debug info ============\n",
- hd_data->log
- );
- }
-
- for(hd = hd_data->hd; hd; hd = hd->next) {
- hd_dump_entry(hd_data, hd, f);
- }
-
- fprintf(f,
- "============ end hardware log ============\n"
- );
- }
-
- if(is_short) {
- /* always to stdout */
- do_short(hd_data, hd0, stdout);
- if(f) do_short(hd_data, hd0, f);
- }
- else {
- for(hd = hd0; hd; hd = hd->next) {
- hd_dump_entry(hd_data, hd, f ? f : stdout);
- }
- }
-
- hd_free_hd_list(hd0);
-}
-
-
-void do_short(hd_data_t *hd_data, hd_t *hd, FILE *f)
-{
-#ifndef LIBHD_TINY
- hd_hw_item_t item;
- hd_t *hd1;
- int i;
- char *s;
-
- for(item = 1; item < hw_all; item++) {
- i = 0;
- s = hd_hw_item_name(item);
- if(!s) continue;
-
- if(item == hw_sys) continue;
-
- for(hd1 = hd; hd1; hd1 = hd1->next) {
- if(hd1->hw_class == item) {
- if(!i++) fprintf(f, "%s:\n", s);
- fprintf(f, " %-20s %s\n",
- hd1->unix_dev_name ? hd1->unix_dev_name : "",
- hd1->model ? hd1->model : "???"
- );
- }
- }
- }
-#endif
-}
-
-
-#if 0
-typedef struct {
- char *vendor, *model, *driver;
-} scanner_t;
-
-static scanner_t scanner_data[] = {
- { "Abaton", "SCAN 300/GS", "abaton" },
- { "Abaton", "SCAN 300/S", "abaton" },
- { "Acer", "300f", "SnapScan" },
- { "Acer", "310s", "SnapScan" },
- { "Acer", "610plus", "SnapScan" },
- { "Acer", "610s", "SnapScan" },
- { "Acer", "Prisa 1240", "SnapScan" },
- { "Acer", "Prisa 3300", "SnapScan" },
- { "Acer", "Prisa 4300", "SnapScan" },
- { "Acer", "Prisa 5300", "SnapScan" },
- { "Acer", "Prisa 620s", "SnapScan" },
- { "Acer", "Prisa 620u", "SnapScan" },
- { "Acer", "Prisa 620ut", "SnapScan" },
- { "Acer", "Prisa 640bu", "SnapScan" },
- { "Acer", "Prisa 640u", "SnapScan" },
- { "Agfa", "Arcus II", "microtek" },
- { "Agfa", "DuoScan", "microtek" },
- { "Agfa", "FOCUS COLOR", "agfafocus" },
- { "Agfa", "FOCUS GS SCANNER", "agfafocus" },
- { "Agfa", "FOCUS II", "agfafocus" },
- { "Agfa", "FOCUS LINEART SCANNER", "agfafocus" },
- { "Agfa", "SnapScan 1212u", "SnapScan" },
- { "Agfa", "SnapScan 1236s", "SnapScan" },
- { "Agfa", "SnapScan 1236u", "SnapScan" },
- { "Agfa", "SnapScan 300", "SnapScan" },
- { "Agfa", "SnapScan 310", "SnapScan" },
- { "Agfa", "SnapScan 600", "SnapScan" },
- { "Agfa", "SnapScan e20", "SnapScan" },
- { "Agfa", "SnapScan e25", "SnapScan" },
- { "Agfa", "SnapScan e40", "SnapScan" },
- { "Agfa", "SnapScan e50", "SnapScan" },
- { "Agfa", "SnapScan e60", "SnapScan" },
- { "Agfa", "StudioScan", "microtek" },
- { "Agfa", "StudioScan II", "microtek" },
- { "Agfa", "StudioScan IIsi", "microtek" },
- { "Apple", "APPLE SCANNER", "apple" },
- { "Apple", "COLORONESCANNER", "apple" },
- { "Apple", "ONESCANNER", "apple" },
- { "Artec", "A6000C", "artec" },
- { "Artec", "A6000C PLUS", "artec" },
- { "Artec", "AM12S", "artec" },
- { "Artec", "AT12", "artec" },
- { "Artec", "AT3", "artec" },
- { "Artec", "AT6", "artec" },
- { "Artec", "ColorOneScanner", "artec" },
- { "Avision", "AV 620 CS", "avision" },
- { "Avision", "AV 6240", "avision" },
- { "Avision", "AV 630 CS", "avision" },
- { "B&H SCSI", "COPISCAN II 2135", "bh" },
- { "B&H SCSI", "COPISCAN II 2137", "bh" },
- { "B&H SCSI", "COPISCAN II 2137A", "bh" },
- { "B&H SCSI", "COPISCAN II 2138A", "bh" },
- { "B&H SCSI", "COPISCAN II 3238", "bh" },
- { "B&H SCSI", "COPISCAN II 3338", "bh" },
- { "B&H SCSI", "COPISCAN II 6338", "bh" },
- { "BlackWidow", "BW4800SP", "artec" },
- { "Canon", "CANOSCAN 2700F", "canon" },
- { "Canon", "CANOSCAN 300", "canon" },
- { "Canon", "CANOSCAN 600", "canon" },
- { "Devcom", "9636PRO", "pie" },
- { "Devcom", "9636S", "pie" },
- { "EDGE", "KTX-9600US", "umax" },
- { "Epson", "ES-8500", "epson" },
- { "Epson", "EXPRESSION 1600", "epson" },
- { "Epson", "EXPRESSION 1680", "epson" },
- { "Epson", "EXPRESSION 636", "epson" },
- { "Epson", "EXPRESSION 800", "epson" },
- { "Epson", "FILMSCAN 200", "epson" },
- { "Epson", "GT-5500", "epson" },
- { "Epson", "GT-7000", "epson" },
- { "Epson", "GT-8000", "epson" },
- { "Epson", "PERFECTION 1200PHOTO", "epson" },
- { "Epson", "PERFECTION 1200S", "epson" },
- { "Epson", "PERFECTION 1200U", "epson" },
- { "Epson", "PERFECTION 1240", "epson" },
- { "Epson", "PERFECTION 1640", "epson" },
- { "Epson", "PERFECTION 1650", "epson" },
- { "Epson", "PERFECTION 610", "epson" },
- { "Epson", "PERFECTION 636S", "epson" },
- { "Epson", "PERFECTION 636U", "epson" },
- { "Epson", "PERFECTION 640", "epson" },
- { "Epson", "PERFECTION1200", "epson" },
- { "Epson", "Perfection 600", "umax" },
- { "Escom", "Image Scanner 256", "umax" },
- { "Escort", "Galleria 600", "umax" },
- { "Fujitsu", "M3091DCD", "m3091" },
- { "Fujitsu", "M3096G", "m3096g" },
- { "Fujitsu", "SP15C", "sp15c" },
- { "Genius", "ColorPage-HR5 Pro", "umax" },
- { "Guillemot", "Maxi Scan A4 Deluxe", "SnapScan" },
- { "HP", "HP OFFICEJET K SERIES", "hp" },
- { "HP", "HP OFFICEJET V SERIES", "hp" },
- { "HP", "HP PHOTOSMART PHOTOSCANNER", "hp" },
- { "HP", "HP PSC 700 SERIES", "hp" },
- { "HP", "HP PSC 900 SERIES", "hp" },
- { "HP", "HP SCANJET 3C", "hp" },
- { "HP", "HP SCANJET 3P", "hp" },
- { "HP", "HP SCANJET 4100C", "hp" },
- { "HP", "HP SCANJET 4C", "hp" },
- { "HP", "HP SCANJET 4P", "hp" },
- { "HP", "HP SCANJET 5200C", "hp" },
- { "HP", "HP SCANJET 6100C", "hp" },
- { "HP", "HP SCANJET 6200C", "hp" },
- { "HP", "HP SCANJET 6250C", "hp" },
- { "HP", "HP SCANJET 6300C", "hp" },
- { "HP", "HP SCANJET 6350C", "hp" },
- { "HP", "HP SCANJET 6390C", "hp" },
- { "HP", "HP SCANJET IIC", "hp" },
- { "HP", "HP SCANJET IICX", "hp" },
- { "HP", "HP SCANJET IIP", "hp" },
- { "HP", "HP ScanJet 5p", "hp" },
- { "HP", "HP4200", "hp4200" },
- { "Highscreen", "Scanboostar Premium", "umax" },
- { "Linotype Hell", "Jade", "umax" },
- { "Linotype Hell", "Jade2", "umax" },
- { "Linotype Hell", "Linoscan 1400", "umax" },
- { "Linotype Hell", "Opal", "umax" },
- { "Linotype Hell", "Opal Ultra", "umax" },
- { "Linotype Hell", "Saphir", "umax" },
- { "Linotype Hell", "Saphir HiRes", "umax" },
- { "Linotype Hell", "Saphir Ultra", "umax" },
- { "Linotype Hell", "Saphir Ultra II", "umax" },
- { "Linotype Hell", "Saphir2", "umax" },
- { "Microtek", "Phantom 636", "microtek2" },
- { "Microtek", "ScanMaker 330", "microtek2" },
- { "Microtek", "ScanMaker 3600", "sm3600" },
- { "Microtek", "ScanMaker 630", "microtek2" },
- { "Microtek", "ScanMaker 636", "microtek2" },
- { "Microtek", "ScanMaker 9600XL", "microtek2" },
- { "Microtek", "ScanMaker E3plus", "microtek2" },
- { "Microtek", "ScanMaker V300", "microtek2" },
- { "Microtek", "ScanMaker V310", "microtek2" },
- { "Microtek", "ScanMaker V600", "microtek2" },
- { "Microtek", "ScanMaker V6USL", "microtek2" },
- { "Microtek", "ScanMaker X6", "microtek2" },
- { "Microtek", "ScanMaker X6EL", "microtek2" },
- { "Microtek", "ScanMaker X6USB", "microtek2" },
- { "Microtek", "Scanmaker 35", "microtek" },
- { "Microtek", "Scanmaker 35t+", "microtek" },
- { "Microtek", "Scanmaker 45t", "microtek" },
- { "Microtek", "Scanmaker 600G", "microtek" },
- { "Microtek", "Scanmaker 600G S", "microtek" },
- { "Microtek", "Scanmaker 600GS", "microtek" },
- { "Microtek", "Scanmaker 600S", "microtek" },
- { "Microtek", "Scanmaker 600Z", "microtek" },
- { "Microtek", "Scanmaker 600Z S", "microtek" },
- { "Microtek", "Scanmaker 600ZS", "microtek" },
- { "Microtek", "Scanmaker E2", "microtek" },
- { "Microtek", "Scanmaker E3", "microtek" },
- { "Microtek", "Scanmaker E6", "microtek" },
- { "Microtek", "Scanmaker II", "microtek" },
- { "Microtek", "Scanmaker IIG", "microtek" },
- { "Microtek", "Scanmaker IIHR", "microtek" },
- { "Microtek", "Scanmaker III", "microtek" },
- { "Microtek", "Scanmaker IISP", "microtek" },
- { "Microtek", "SlimScan C6", "microtek2" },
- { "Mustek", "1200 CU", "mustek_usb" },
- { "Mustek", "1200 CU Plus", "mustek_usb" },
- { "Mustek", "1200 UB", "mustek_usb" },
- { "Mustek", "600 CU", "mustek_usb" },
- { "Mustek", "Paragon 1200 A3 Pro", "mustek" },
- { "Mustek", "Paragon 1200 III SP", "mustek" },
- { "Mustek", "Paragon 1200 LS", "mustek" },
- { "Mustek", "Paragon 1200 SP Pro", "mustek" },
- { "Mustek", "Paragon 600 II CD", "mustek" },
- { "Mustek", "Paragon 800 II SP", "mustek" },
- { "Mustek", "Paragon MFC-600S", "mustek" },
- { "Mustek", "Paragon MFC-800S", "mustek" },
- { "Mustek", "Paragon MFS-12000CX", "mustek" },
- { "Mustek", "Paragon MFS-12000SP", "mustek" },
- { "Mustek", "Paragon MFS-1200SP", "mustek" },
- { "Mustek", "Paragon MFS-6000CX", "mustek" },
- { "Mustek", "Paragon MFS-6000SP", "mustek" },
- { "Mustek", "Paragon MFS-8000SP", "mustek" },
- { "Mustek", "ScanExpress 12000SP", "mustek" },
- { "Mustek", "ScanExpress 12000SP Plus", "mustek" },
- { "Mustek", "ScanExpress 6000SP", "mustek" },
- { "Mustek", "ScanExpress A3 SP", "mustek" },
- { "Mustek", "ScanMagic 600 II SP", "mustek" },
- { "Mustek", "ScanMagic 9636S", "mustek" },
- { "Mustek", "ScanMagic 9636S Plus", "mustek" },
- { "NEC", "PC-IN500/4C", "nec" },
- { "Nikon", "AX-210", "umax" },
- { "Nikon", "LS-1000", "coolscan" },
- { "Nikon", "LS-20", "coolscan" },
- { "Nikon", "LS-2000", "coolscan" },
- { "Nikon", "LS-30", "coolscan" },
- { "Pie", "9630S", "pie" },
- { "Pie", "ScanAce 1230S", "pie" },
- { "Pie", "ScanAce 1236S", "pie" },
- { "Pie", "ScanAce 630S", "pie" },
- { "Pie", "ScanAce 636S", "plustek" },
- { "Pie", "ScanAce II", "pie" },
- { "Pie", "ScanAce II Plus", "pie" },
- { "Pie", "ScanAce III", "pie" },
- { "Pie", "ScanAce III Plus", "pie" },
- { "Pie", "ScanAce Plus", "pie" },
- { "Pie", "ScanAce ScanMedia", "pie" },
- { "Pie", "ScanAce ScanMedia II", "pie" },
- { "Pie", "ScanAce V", "pie" },
- { "Plustek", "OpticPro 19200S", "artec" },
- { "Polaroid", "DMC", "dmc" },
- { "Ricoh", "Ricoh IS50", "ricoh" },
- { "Ricoh", "Ricoh IS60", "ricoh" },
- { "Scanport", "SQ4836", "microtek2" },
- { "Sharp", "9036 Flatbed scanner", "sharp" },
- { "Sharp", "JX-250", "sharp" },
- { "Sharp", "JX-320", "sharp" },
- { "Sharp", "JX-330", "sharp" },
- { "Sharp", "JX-350", "sharp" },
- { "Sharp", "JX-610", "sharp" },
- { "Siemens", "9036 Flatbed scanner", "s9036" },
- { "Siemens", "FOCUS COLOR PLUS", "agfafocus" },
- { "Siemens", "ST400", "st400" },
- { "Siemens", "ST800", "st400" },
- { "Tamarack", "Artiscan 12000C", "tamarack" },
- { "Tamarack", "Artiscan 6000C", "tamarack" },
- { "Tamarack", "Artiscan 8000C", "tamarack" },
- { "Trust", "Compact Scan USB 19200", "mustek_usb" },
- { "Trust", "Imagery 1200 SP", "mustek" },
- { "Trust", "Imagery 4800 SP", "mustek" },
- { "Trust", "SCSI Connect 19200", "mustek" },
- { "Trust", "SCSI excellence series 19200", "mustek" },
- { "UMAX", "Astra 1200S", "umax" },
- { "UMAX", "Astra 1220S", "umax" },
- { "UMAX", "Astra 2100S", "umax" },
- { "UMAX", "Astra 2200", "umax" },
- { "UMAX", "Astra 2200 S", "umax" },
- { "UMAX", "Astra 2200 U", "umax" },
- { "UMAX", "Astra 2400S", "umax" },
- { "UMAX", "Astra 600S", "umax" },
- { "UMAX", "Astra 610S", "umax" },
- { "UMAX", "Gemini D-16", "umax" },
- { "UMAX", "Mirage D-16L", "umax" },
- { "UMAX", "Mirage II", "umax" },
- { "UMAX", "Mirage IIse", "umax" },
- { "UMAX", "PL-II", "umax" },
- { "UMAX", "PSD", "umax" },
- { "UMAX", "PowerLook", "umax" },
- { "UMAX", "PowerLook 2000", "umax" },
- { "UMAX", "PowerLook 3000", "umax" },
- { "UMAX", "PowerLook III", "umax" },
- { "UMAX", "Supervista S-12", "umax" },
- { "UMAX", "UC 1200S", "umax" },
- { "UMAX", "UC 1200SE", "umax" },
- { "UMAX", "UC 1260", "umax" },
- { "UMAX", "UC 630", "umax" },
- { "UMAX", "UC 840", "umax" },
- { "UMAX", "UG 630", "umax" },
- { "UMAX", "UG 80", "umax" },
- { "UMAX", "UMAX S-12", "umax" },
- { "UMAX", "UMAX S-12G", "umax" },
- { "UMAX", "UMAX S-6E", "umax" },
- { "UMAX", "UMAX S-6EG", "umax" },
- { "UMAX", "UMAX VT600", "umax" },
- { "UMAX", "Vista S6", "umax" },
- { "UMAX", "Vista S6E", "umax" },
- { "UMAX", "Vista-S8", "umax" },
- { "UMAX", "Vista-T630", "umax" },
- { "Ultima", "A6000C", "artec" },
- { "Ultima", "A6000C PLUS", "artec" },
- { "Ultima", "AM12S", "artec" },
- { "Ultima", "AT12", "artec" },
- { "Ultima", "AT3", "artec" },
- { "Ultima", "AT6", "artec" },
- { "Ultima", "ColorOneScanner", "artec" },
- { "Vobis", "HighScan", "microtek2" },
- { "Vobis", "Scanboostar Premium", "umax" },
- { "Vuego", "Close SnapScan 310 compatible.", "SnapScan" }
-};
-
-static char *scanner_info(hd_t *hd)
-{
- int i;
-
- if(!hd->vendor.name || !hd->device.name) return NULL;
-
- for(i = 0; (unsigned) i < sizeof scanner_data / sizeof *scanner_data; i++) {
- if(
- !strcasecmp(scanner_data[i].vendor, hd->vendor.name) &&
- !strcasecmp(scanner_data[i].model, hd->device.name)
- ) {
- return scanner_data[i].driver;
- }
- }
-
- return NULL;
-}
-
-#endif
-
-void do_test(hd_data_t *hd_data)
-{
-#if 0
- hd_t *hd, *hd0;
- hd_res_t *res;
- driver_info_t *di;
- FILE *f;
- int i, wheels, buttons;
- unsigned u;
- uint64_t ul;
- char *s, *s1;
- hd_hw_item_t item, items[] = {
- hw_display, hw_monitor, hw_tv, hw_sound, hw_mouse, hw_disk, hw_cdrom,
- hw_floppy, hw_modem, hw_isdn, hw_scanner, hw_camera
- };
-
- hd_set_probe_feature(hd_data, pr_default);
- hd_scan(hd_data);
-
- f = fopen("/tmp/hw_overview.log", "w");
-
- for(i = 0; (unsigned) i < sizeof items / sizeof *items; i++) {
- item = items[i];
- hd0 = hd_list(hd_data, item, 0, NULL);
-
- if(!hd0) continue;
-
- switch(item) {
- case hw_disk:
- fprintf(f, "Disk\n");
- for(hd = hd0; hd; hd = hd->next) {
- u = 0;
- for(res = hd->res; res; res = res->next) {
- if(res->any.type == res_size && res->size.unit == size_unit_sectors) {
- ul = (uint64_t) res->size.val1 * (res->size.val2 ?: 0x200);
- u = ((ul >> 29) + 1) >> 1;
- }
- }
- s = hd->bus.name;
- fprintf(f, " %s", hd->model);
- if(u) {
- fprintf(f, " (");
- if(s) fprintf(f, "%s, ", s);
- fprintf(f, "%u GB)", u);
- }
- fprintf(f, "\n");
- }
- fprintf(f, "\n");
- break;
-
- case hw_cdrom:
- fprintf(f, "CD-ROM\n");
- for(hd = hd0; hd; hd = hd->next) {
- s = hd->bus.name;
- fprintf(f, " %s (", hd->model);
- if(s) fprintf(f, "%s, ", s);
- fprintf(f, "%s)", hd->prog_if.name ?: "CD-ROM");
- fprintf(f, "\n");
- }
- fprintf(f, "\n");
- break;
-
- case hw_monitor:
- fprintf(f, "Monitor\n");
- for(hd = hd0; hd; hd = hd->next) {
- s = hd->model;
- if(!strcmp(hd->unique_id, "rdCR.EY_qmtb9YY0")) s = "not detected";
- fprintf(f, " %s\n", s);
- }
- fprintf(f, "\n");
- break;
-
- case hw_display:
- fprintf(f, "GFX Card\n");
- for(hd = hd0; hd; hd = hd->next) {
- u = 0;
- s1 = NULL;
- for(di = hd->driver_info; di; di = di->next) {
- if(di->any.type == di_x11) {
- if(!s1) s1 = di->x11.server;
- if(di->x11.x3d && !u) {
- s1 = di->x11.server;
- u = 1;
- }
- }
- }
- if(!s1) {
- s1 = "not supported";
- u = 0;
- }
- fprintf(f, " %s (%s", hd->model, s1);
- if(u) fprintf(f, ", 3D support");
- fprintf(f, ")");
- fprintf(f, "\n");
- }
- fprintf(f, "\n");
- break;
-
- case hw_mouse:
- fprintf(f, "Mouse\n");
- for(hd = hd0; hd; hd = hd->next) {
- buttons = wheels = -1; // make gcc happy
- s = NULL;
- for(di = hd->driver_info; di; di = di->next) {
- if(di->any.type == di_mouse) {
- buttons = di->mouse.buttons;
- wheels = di->mouse.wheels;
- s = di->mouse.xf86;
- break;
- }
- }
- if(!s) {
- s = "not supported";
- buttons = wheels = -1;
- }
- fprintf(f, " %s (%s", hd->model, s);
- if(buttons >= 0) fprintf(f, ", %d buttons", buttons);
- if(wheels >= 0) fprintf(f, ", %d wheels", wheels);
- fprintf(f, ")");
- fprintf(f, "\n");
- }
- fprintf(f, "\n");
- break;
-
- case hw_tv:
- fprintf(f, "TV Card\n");
- for(hd = hd0; hd; hd = hd->next) {
- s = NULL;
- for(di = hd->driver_info; di; di = di->next) {
- if(
- (di->any.type == di_any || di->any.type == di_module) &&
- di->any.hddb0 &&
- di->any.hddb0->str
- ) {
- s = di->any.hddb0->str;
- break;
- }
- }
- if(!s) {
- s = "not supported";
- }
- fprintf(f, " %s (%s)\n", hd->model, s);
- }
- fprintf(f, "\n");
- break;
-
- case hw_sound:
- fprintf(f, "Sound Card\n");
- for(hd = hd0; hd; hd = hd->next) {
- s = NULL;
- for(di = hd->driver_info; di; di = di->next) {
- if(
- (di->any.type == di_any || di->any.type == di_module) &&
- di->any.hddb0 &&
- di->any.hddb0->str
- ) {
- s = di->any.hddb0->str;
- break;
- }
- }
- if(!s) {
- s = "not supported";
- }
- fprintf(f, " %s (%s)\n", hd->model, s);
- }
- fprintf(f, "\n");
- break;
-
- case hw_camera:
- fprintf(f, "Digital Camera/WebCam\n");
- for(hd = hd0; hd; hd = hd->next) {
- fprintf(f, " %s\n", hd->model);
- }
- fprintf(f, "\n");
- break;
-
- case hw_floppy:
- fprintf(f, "Floppy/Zip Drive\n");
- for(hd = hd0; hd; hd = hd->next) {
- fprintf(f, " %s\n", hd->model);
- }
- fprintf(f, "\n");
- break;
-
- case hw_modem:
- fprintf(f, "Modem\n");
- for(hd = hd0; hd; hd = hd->next) {
- fprintf(f, " %s\n", hd->model);
- }
- fprintf(f, "\n");
- break;
-
- case hw_isdn:
- fprintf(f, "ISDN\n");
- for(hd = hd0; hd; hd = hd->next) {
- fprintf(f, " %s (%ssupported)\n", hd->model, hd->driver_info ? "" : "not ");
- }
- fprintf(f, "\n");
- break;
-
- case hw_scanner:
- fprintf(f, "Scanner\n");
- for(hd = hd0; hd; hd = hd->next) {
- s = scanner_info(hd);
- if(!s) s = "not supported";
- fprintf(f, " %s (%s)\n", hd->model, s);
- }
- fprintf(f, "\n");
- break;
-
- default:
- break;
- }
-
- hd_free_hd_list(hd0);
-
- }
-
- fclose(f);
-
- f = fopen("/tmp/hw_detail.log", "w");
-
- if(hd_data->log) {
- fprintf(f,
- "============ start detailed hardware log ============\n"
- );
- fprintf(f,
- "============ start debug info ============\n%s=========== end debug info ============\n",
- hd_data->log
- );
- }
-
- for(hd = hd_data->hd; hd; hd = hd->next) {
- hd_dump_entry(hd_data, hd, f);
- }
-
- fprintf(f,
- "============ end detailed hardware log ============\n"
- );
-
- fclose(f);
-
- fprintf(stderr, "\n");
-
-#endif
-
-#if 0
- hd_t *hd;
- hd_t *hd0 = NULL;
-
- for(hd = hd_list(hd_data, hw_cdrom, 1, hd0); hd; hd = hd->next) {
- fprintf(stderr, "cdrom: %s, %s\n", hd->unix_dev_name, hd->model);
- }
-
- for(hd = hd_list(hd_data, hw_cdrom, 1, hd0); hd; hd = hd->next) {
- fprintf(stderr, "cdrom: %s, %s\n", hd->unix_dev_name, hd->model);
- }
-#endif
-
-#if 0
- hd_t *hd;
-
- hd = hd_list(hd_data, hw_disk, 1, NULL);
- hd_free_hd_list(hd);
- hd_free_hd_data(hd_data);
-
- hd = hd_list(hd_data, hw_cdrom, 1, NULL);
- hd_free_hd_list(hd);
- hd_free_hd_data(hd_data);
-
- hd = hd_list(hd_data, hw_storage_ctrl, 1, NULL);
- hd_free_hd_list(hd);
- hd_free_hd_data(hd_data);
-
- hd = hd_list(hd_data, hw_display, 1, NULL);
- hd_free_hd_list(hd);
- hd_free_hd_data(hd_data);
-
-#if 0
- for(hd = hd_data->hd; hd; hd = hd->next) {
- hd_dump_entry(hd_data, hd, stdout);
- }
-
- printf("%s\n", hd_data->log);
-#endif
-
-#endif
-
-#if 0
- hd_t *hd, *hd0;
-
- hd0 = hd_list(hd_data, hw_sound, 1, NULL);
- hd0 = hd_list(hd_data, hw_sound, 1, NULL);
-
- for(hd = hd0; hd; hd = hd->next) {
- hd_dump_entry(hd_data, hd, stdout);
- }
-
-#if 0
- hd_data->log = free_mem(hd_data->log);
- dump_hddb_data(hd_data, hd_data->hddb_dev, "hddb_dev, final");
- if(hd_data->log) printf("%s", hd_data->log);
-#endif
-
-#endif
-
-#if 0
- hd_t *hd;
- driver_info_t *di;
- str_list_t *sl;
-
- hd = hd_list(hd_data, hw_sys, 1, NULL);
-
- for(di = hd->driver_info; di; di = di->next) {
- if(di->any.type == di_module) {
- for(sl = di->module.names; sl; sl = sl->next) printf("%s\n", sl->str);
- }
- }
-
-#endif
-}
-
-
-void help()
-{
- fprintf(stderr,
- "Usage: hwinfo [options]\n"
- "Probe for hardware.\n"
- " --short just a short listing\n"
- " --log logfile write info to logfile\n"
- " --debug level set debuglevel\n"
- " --version show libhd version\n"
- " --dump-db n dump hardware data base, 0: external, 1: internal\n"
- " --hw_item probe for hw_item\n"
- " hw_item is one of:\n"
- " all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu,\n"
- " disk, dsl, dvb, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn,\n"
- " joystick, keyboard, memory, modem, monitor, mouse, netcard, network,\n"
- " partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp,\n"
- " sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan, zip\n\n"
- " Note: debug info is shown only in the log file. (If you specify a\n"
- " log file the debug level is implicitly set to a reasonable value.)\n"
- );
-}
-
-
-/*
- * Parse command line options.
- */
-int get_probe_flags(int argc, char **argv, hd_data_t *hd_data)
-{
- int i, j, k;
- char *s, *t;
- for(i = 0; i < argc; i++) {
- s = argv[i];
-
- if(!strcmp(s, ".")) {
- return i + 1;
- }
-
- t = "debug=";
- if(!strncmp(s, t, strlen(t))) {
- hd_data->debug = strtol(s + strlen(t), NULL, 0);
- continue;
- }
-
- t = "list=";
- if(!strncmp(s, t, strlen(t))) {
- list = s + strlen(t);
- continue;
- }
-
- t = "list+=";
- if(!strncmp(s, t, strlen(t))) {
- list = s + strlen(t);
- listplus = 1;
- continue;
- }
-
- t = "log=";
- if(!strncmp(s, t, strlen(t))) {
- log_file = s + strlen(t);
- continue;
- }
-
- t = "only=";
- if(!strncmp(s, t, strlen(t))) {
- add_str_list(&hd_data->only, s + strlen(t));
- continue;
- }
-
- t = "root=";
- if(!strncmp(s, t, strlen(t))) {
- opt.root = s + strlen(t);
- continue;
- }
-
- k = 1;
- if(*s == '+')
- s++;
- else if(*s == '-')
- k = 0, s++;
-
- if((j = hd_probe_feature_by_name(s))) {
- if(k)
- hd_set_probe_feature(hd_data, j);
- else
- hd_clear_probe_feature(hd_data, j);
- continue;
- }
-
- fprintf(stderr, "oops: don't know what to do with \"%s\"\n", s);
- return -1;
- }
-
- return argc;
-}
-
-/*
- * A simple progress function.
- */
-void progress2(char *pos, char *msg)
-{
- if(!test) printf("\r%64s\r", "");
- printf("> %s: %s", pos, msg);
- if(test) printf("\n");
- fflush(stdout);
-}
-
-
-#define INSTALL_INF "/etc/install.inf"
-
-int braille_install_info(hd_data_t *hd_data)
-{
- hd_t *hd;
- int ok = 0;
- char *braille = NULL;
- char *braille_dev = NULL;
- str_list_t *sl0, *sl;
- FILE *f;
-
- hd = hd_list(hd_data, hw_braille, 1, NULL);
-
- if(hd_data->progress) {
- printf("\r%64s\r", "");
- fflush(stdout);
- }
-
- for(; hd; hd = hd->next) {
- if(
- hd->base_class.id == bc_braille && /* is a braille display */
- hd->unix_dev_name && /* and has a device name */
- (braille = hd->device.name)
- ) {
- braille_dev = hd->unix_dev_name;
- ok = 1;
- break;
- }
- }
-
- if(!ok) return 1;
-
- printf("found a %s at %s\n", braille, braille_dev);
-
- sl0 = read_file(INSTALL_INF, 0, 0);
- f = fopen(INSTALL_INF, "w");
- if(!f) {
- perror(INSTALL_INF);
- return 1;
- }
-
- for(sl = sl0; sl; sl = sl->next) {
- if(
- strstr(sl->str, "Braille:") != sl->str &&
- strstr(sl->str, "Brailledevice:") != sl->str
- ) {
- fprintf(f, "%s", sl->str);
- }
- }
-
- fprintf(f, "Braille: %s\n", braille);
- fprintf(f, "Brailledevice: %s\n", braille_dev);
-
- fclose(f);
-
- return 0;
-}
-
-
-/*
- * get VGA parameter from /proc/cmdline
- */
-int get_fb_mode()
-{
-#ifndef __PPC__
- FILE *f;
- char buf[256], *s, *t;
- int i, fb_mode = 0;
-
- if((f = fopen("/proc/cmdline", "r"))) {
- if(fgets(buf, sizeof buf, f)) {
- t = buf;
- while((s = strsep(&t, " "))) {
- if(sscanf(s, "vga=%i", &i) == 1) fb_mode = i;
- if(strstr(s, "vga=normal") == s) fb_mode = 0;
- }
- }
- fclose(f);
- }
-
- return fb_mode > 0x10 ? fb_mode : 0;
-#else /* __PPC__ */
- /* this is the only valid test for active framebuffer ... */
- FILE *f = NULL;
- int fb_mode = 0;
- if((f = fopen("/dev/fb", "r"))) {
- fb_mode++;
- fclose(f);
- }
-
- return fb_mode;
-#endif
-}
-
-
-/*
- * read "x11i=" entry from /proc/cmdline
- */
-char *get_x11i()
-{
- FILE *f;
- char buf[256], *s, *t;
- static char x11i[64] = { };
-
- if(*x11i) return x11i;
-
- if((f = fopen("/proc/cmdline", "r"))) {
- if(fgets(buf, sizeof buf, f)) {
- t = buf;
- while((s = strsep(&t, " "))) {
- if(sscanf(s, "x11i=%60s", x11i) == 1) break;
- }
- }
- fclose(f);
- }
-
- return x11i;
-}
-
-
-/*
- * Assumes xf86_ver to be either "3" or "4" (or empty).
- */
-char *get_xserver(hd_data_t *hd_data, char **version, char **busid, driver_info_t **x11_driver)
-{
- static char display[16];
- static char xf86_ver[2];
- static char id[32];
- char c, *x11i = get_x11i();
- driver_info_t *di;
- hd_t *hd;
-
- *x11_driver = NULL;
-
- *display = *xf86_ver = *id = c = 0;
- *version = xf86_ver;
- *busid = id;
-
- if(x11i) {
- if(*x11i == '3' || *x11i == '4') {
- c = *x11i;
- }
- else {
- if(*x11i >= 'A' && *x11i <= 'Z') {
- c = '3';
- }
- if(*x11i >= 'a' && *x11i <= 'z') {
- c = '4';
- }
- if(c) {
- strncpy(display, x11i, sizeof display - 1);
- display[sizeof display - 1] = 0;
- }
- }
- }
-
- if(c) { xf86_ver[0] = c; xf86_ver[1] = 0; }
-
- hd = hd_get_device_by_idx(hd_data, hd_display_adapter(hd_data));
-
- if(hd && hd->bus.id == bus_pci)
- sprintf(id, "%d:%d:%d", hd->slot >> 8, hd->slot & 0xff, hd->func);
-
- if(!hd || *display) return display;
-
- for(di = hd->driver_info; di; di = di->next) {
- if(di->any.type == di_x11 && di->x11.server && di->x11.xf86_ver && !di->x11.x3d) {
- if(c == 0 || c == di->x11.xf86_ver[0]) {
- xf86_ver[0] = di->x11.xf86_ver[0];
- xf86_ver[1] = 0;
- strncpy(display, di->x11.server, sizeof display - 1);
- display[sizeof display - 1] = 0;
- *x11_driver = di;
- break;
- }
- }
- }
-
- if(*display) return display;
-
- if(c == 0) c = '4'; /* default to XF 4, if nothing else is known */
-
- xf86_ver[0] = c;
- xf86_ver[1] = 0;
- strcpy(display, c == '3' ? "FBDev" : "fbdev");
-
- return display;
-}
-
-int x11_install_info(hd_data_t *hd_data)
-{
- hd_t *hd;
- driver_info_t *di;
- char *x11i;
- int fb_mode, kbd_ok = 0;
- unsigned yast2_color = 0;
- char *xkbrules = NULL, *xkbmodel = NULL, *xkblayout = NULL;
- char *xserver, *version, *busid;
- driver_info_t *x11_driver;
- str_list_t *sl0, *sl;
- FILE *f;
-
- /* get color info */
- hd_set_probe_feature(hd_data, pr_cpu);
- hd_set_probe_feature(hd_data, pr_prom);
- hd_scan(hd_data);
-
- x11i = get_x11i();
- fb_mode = get_fb_mode();
-
- hd_list(hd_data, hw_display, 1, NULL);
-
- for(hd = hd_list(hd_data, hw_keyboard, 1, NULL); hd; hd = hd->next) {
- kbd_ok = 1;
- di = hd->driver_info;
- if(di && di->any.type == di_kbd) {
- xkbrules = di->kbd.XkbRules;
- xkbmodel = di->kbd.XkbModel;
- xkblayout = di->kbd.XkbLayout;
- break;
- }
- /* don't free di */
- }
-
- xserver = get_xserver(hd_data, &version, &busid, &x11_driver);
-
- switch(hd_mac_color(hd_data)) {
- case 0x01:
- yast2_color = 0x5a4add;
- break;
- case 0x04:
- yast2_color = 0x32cd32;
- break;
- case 0x05:
- yast2_color = 0xff7f50;
- break;
- case 0x07:
- yast2_color = 0x000000;
- break;
- case 0xff:
- yast2_color = 0x7f7f7f;
- break;
- }
-
- if(hd_data->progress) {
- printf("\r%64s\r", "");
- fflush(stdout);
- }
-
- sl0 = read_file(INSTALL_INF, 0, 0);
- f = fopen(INSTALL_INF, "w");
- if(!f) {
- perror(INSTALL_INF);
- return 1;
- }
-
- for(sl = sl0; sl; sl = sl->next) {
- if(
- strstr(sl->str, "Framebuffer:") != sl->str &&
- strstr(sl->str, "XServer:") != sl->str &&
- strstr(sl->str, "XVersion:") != sl->str &&
- strstr(sl->str, "XBusID:") != sl->str &&
- strstr(sl->str, "X11i:") != sl->str &&
- strstr(sl->str, "Keyboard:") != sl->str &&
- strstr(sl->str, "XkbRules:") != sl->str &&
- strstr(sl->str, "XkbModel:") != sl->str &&
- strstr(sl->str, "XkbLayout:") != sl->str &&
- strstr(sl->str, "XF86Ext:") != sl->str &&
- strstr(sl->str, "XF86Raw:") != sl->str
- ) {
- fprintf(f, "%s", sl->str);
- }
- }
-
- fprintf(f, "Keyboard: %d\n", kbd_ok);
- if(fb_mode) fprintf(f, "Framebuffer: 0x%04x\n", fb_mode);
- if(x11i) fprintf(f, "X11i: %s\n", x11i);
- if(xserver && *xserver) {
- fprintf(f, "XServer: %s\n", xserver);
- if(*version) fprintf(f, "XVersion: %s\n", version);
- if(*busid) fprintf(f, "XBusID: %s\n", busid);
- }
- if(xkbrules && *xkbrules) fprintf(f, "XkbRules: %s\n", xkbrules);
- if(xkbmodel && *xkbmodel) fprintf(f, "XkbModel: %s\n", xkbmodel);
- if(xkblayout && *xkblayout) fprintf(f, "XkbLayout: %s\n", xkblayout);
-
- if(x11_driver) {
- for(sl = x11_driver->x11.extensions; sl; sl = sl->next) {
- if(*sl->str) fprintf(f, "XF86Ext: Load\t\t\"%s\"\n", sl->str);
- }
- for(sl = x11_driver->x11.options; sl; sl = sl->next) {
- if(*sl->str) fprintf(f, "XF86Raw: Option\t\"%s\"\n", sl->str);
- }
- for(sl = x11_driver->x11.raw; sl; sl = sl->next) {
- if(*sl->str) fprintf(f, "XF86Raw: %s\n", sl->str);
- }
- }
-
- fclose(f);
-
- return 0;
-}
-
-
-char *xserver3map[] =
-{
-#ifdef __i386__
- "VGA16", "xvga16",
- "RUSH", "xrush",
-#endif
-#if defined(__i386__) || defined(__alpha__) || defined(__ia64__)
- "SVGA", "xsvga",
- "3DLABS", "xglint",
-#endif
-#if defined(__i386__) || defined(__alpha__)
- "MACH64", "xmach64",
- "P9000", "xp9k",
- "S3", "xs3",
-#endif
-#ifdef __alpha__
- "TGA", "xtga",
-#endif
-#ifdef __sparc__
- "SUNMONO", "xsunmono",
- "SUN", "xsun",
- "SUN24", "xsun24",
-#endif
-#if 0
- "VMWARE", "xvmware",
-#endif
- 0, 0
-};
-
-
-void dump_packages(hd_data_t *hd_data)
-{
- str_list_t *sl;
- int i;
-
- hd_data->progress = NULL;
- hd_scan(hd_data);
-
- sl = get_hddb_packages(hd_data);
-
- for(i = 0; xserver3map[i]; i += 2) {
- if (!search_str_list(sl, xserver3map[i + 1]))
- add_str_list(&sl, new_str(xserver3map[i + 1]));
- }
-
- for(; sl; sl = sl->next) {
- printf("%s\n", sl->str);
- }
-}
-
-
-struct x11pack {
- struct x11pack *next;
- char *pack;
-};
-
-int oem_install_info(hd_data_t *hd_data)
-{
- hd_t *hd;
- str_list_t *str;
- str_list_t *x11packs = 0;
- str_list_t *sl0, *sl;
- FILE *f;
- int pcmcia, i;
-
- driver_info_x11_t *di, *drvinfo;
-
- hd_set_probe_feature(hd_data, pr_pci);
- hd_scan(hd_data);
- pcmcia = hd_has_pcmcia(hd_data);
-
- for(hd = hd_list(hd_data, hw_display, 1, NULL); hd; hd = hd->next) {
- for(str = hd->requires; str; str = str->next) {
- if(!search_str_list(x11packs, str->str)) {
- add_str_list(&x11packs, str->str);
- }
- }
- drvinfo = (driver_info_x11_t *) hd->driver_info;
- for (di = drvinfo; di; di = (driver_info_x11_t *)di->next) {
- if (di->type != di_x11)
- continue;
- if (di->xf86_ver[0] == '3') {
- char *server = di->server;
- if (server) {
- for (i = 0; xserver3map[i]; i += 2)
- if (!strcmp(xserver3map[i], server))
- break;
- if (xserver3map[i])
- if (!search_str_list(x11packs, xserver3map[i + 1]))
- add_str_list(&x11packs, xserver3map[i + 1]);
- }
- }
- }
- }
-
- if(hd_data->progress) {
- printf("\r%64s\r", "");
- fflush(stdout);
- }
-
- sl0 = read_file(INSTALL_INF, 0, 0);
- f = fopen(INSTALL_INF, "w");
- if(!f) {
- perror(INSTALL_INF);
- return 1;
- }
- for(sl = sl0; sl; sl = sl->next) {
- if(
- strstr(sl->str, "X11Packages:") != sl->str &&
- strstr(sl->str, "Pcmcia:") != sl->str
- ) {
- fprintf(f, "%s", sl->str);
- }
- }
- if (x11packs) {
- fprintf(f, "X11Packages: ");
- for (sl = x11packs; sl; sl = sl->next) {
- if (sl != x11packs)
- fputc(',', f);
- fprintf(f, "%s", sl->str);
- }
- fputc('\n', f);
- }
- if (pcmcia)
- fprintf(f, "Pcmcia: %d\n", pcmcia);
- fclose(f);
- return 0;
-}
-
-
-void dump_db_raw(hd_data_t *hd_data)
-{
- hd_data->progress = NULL;
- hd_clear_probe_feature(hd_data, pr_all);
- hd_scan(hd_data);
-
- if(opt.db_idx >= sizeof hd_data->hddb2 / sizeof *hd_data->hddb2) return;
-
- hddb_dump_raw(hd_data->hddb2[opt.db_idx], stdout);
-}
-
-
-void dump_db(hd_data_t *hd_data)
-{
- hd_data->progress = NULL;
- hd_clear_probe_feature(hd_data, pr_all);
- hd_scan(hd_data);
-
- if(opt.db_idx >= sizeof hd_data->hddb2 / sizeof *hd_data->hddb2) return;
-
- hddb_dump(hd_data->hddb2[opt.db_idx], stdout);
-}
-
-
-void do_chroot(hd_data_t *hd_data, char *dir)
-{
- int i;
-
- i = chroot(dir);
- ADD2LOG("chroot %s: %s\n", dir, i ? strerror(errno) : "ok");
-
- if(!i) chdir("/");
-}
-
-
-void ask_db(hd_data_t *hd_data, char *query)
-{
- hd_t *hd;
- driver_info_t *di;
- str_list_t *sl, *query_sl;
- unsigned tag = 0, u, cnt;
- char buf[256];
-
- setenv("hwprobe", "-all", 1);
- hd_scan(hd_data);
-
- hd = add_hd_entry(hd_data, __LINE__, 0);
-
- query_sl = hd_split(' ', query);
-
- for(sl = query_sl; sl; sl = sl->next) {
- if(!strcmp(sl->str, "pci")) { tag = TAG_PCI; continue; }
- if(!strcmp(sl->str, "usb")) { tag = TAG_USB; continue; }
- if(!strcmp(sl->str, "pnp")) { tag = TAG_EISA; continue; }
- if(!strcmp(sl->str, "isapnp")) { tag = TAG_EISA; continue; }
- if(!strcmp(sl->str, "special")) { tag = TAG_SPECIAL; continue; }
- if(!strcmp(sl->str, "pcmcia")) { tag = TAG_PCMCIA; continue; }
-
- if(sscanf(sl->str, "class=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) {
- hd->base_class.id = u >> 16;
- hd->sub_class.id = (u >> 8) & 0xff;
- hd->prog_if.id = u & 0xff;
- continue;
- }
-
- if(sscanf(sl->str, "vendor=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) {
- hd->vendor.id = MAKE_ID(tag, u);
- continue;
- }
-
- if(sscanf(sl->str, "vendor=%3s%n", buf, &cnt) >= 1 && !sl->str[cnt]) {
- u = name2eisa_id(buf);
- if(u) hd->vendor.id = u;
- tag = TAG_EISA;
- continue;
- }
-
- if(sscanf(sl->str, "device=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) {
- hd->device.id = MAKE_ID(tag, u);
- continue;
- }
-
- if(sscanf(sl->str, "subvendor=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) {
- hd->sub_vendor.id = MAKE_ID(tag, u);
- continue;
- }
-
- if(sscanf(sl->str, "subvendor=%3s%n", buf, &cnt) >= 1 && !sl->str[cnt]) {
- u = name2eisa_id(buf);
- if(u) hd->sub_vendor.id = u;
- tag = TAG_EISA;
- continue;
- }
-
- if(sscanf(sl->str, "subdevice=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) {
- hd->sub_device.id = MAKE_ID(tag, u);
- continue;
- }
-
- if(sscanf(sl->str, "revision=%i%n", &u, &cnt) >= 1 && !sl->str[cnt]) {
- hd->revision.id = u;
- continue;
- }
-
- if(sscanf(sl->str, "serial=%255s%n", buf, &cnt) >= 1 && !sl->str[cnt]) {
- hd->serial = new_str(buf);
- continue;
- }
-
- }
-
- free_str_list(query_sl);
-
- hddb_add_info(hd_data, hd);
-
- for(di = hd->driver_info; di; di = di->next) {
- if(di->any.type == di_module && di->module.modprobe) {
- for(sl = di->module.names; sl; sl = sl->next) {
- printf("%s%c", sl->str, sl->next ? ' ' : '\n');
- }
- }
- }
-}
-
-
-int is_same_block_dev(hd_t *hd1, hd_t *hd2)
-{
- if(!hd1 || !hd2 || hd1 == hd2) return 0;
-
- if(
- hd1->base_class.id != hd2->base_class.id ||
- hd1->sub_class.id != hd2->sub_class.id
- ) return 0;
-
- if(
- !hd1->model ||
- !hd2->model ||
- strcmp(hd1->model, hd2->model)
- ) return 0;
-
- if(hd1->revision.name || hd2->revision.name) {
- if(
- !hd1->revision.name ||
- !hd2->revision.name ||
- strcmp(hd1->revision.name, hd2->revision.name)
- ) return 0;
- }
-
- if(hd1->serial || hd2->serial) {
- if(
- !hd1->serial ||
- !hd2->serial ||
- strcmp(hd1->serial, hd2->serial)
- ) return 0;
- }
-
- return 1;
-}
-
-
-hd_t *get_same_block_dev(hd_t *hd_list, hd_t *hd, hd_status_value_t status)
-{
- for(; hd_list; hd_list = hd_list->next) {
- if(hd_list->status.available != status) continue;
- if(is_same_block_dev(hd_list, hd)) return hd_list;
- }
-
- return NULL;
-}
-
-
-void get_mapping(hd_data_t *hd_data)
-{
- hd_t *hd_manual, *hd, *hd2;
- struct {
- hd_t *hd;
- unsigned unknown:1;
- } map[256] = { };
- unsigned maps = 0, u;
- int broken, first;
- hd_hw_item_t hw_items[] = { hw_disk, hw_cdrom, 0 };
-
- hd_data->progress = NULL;
-
- hd_data->flags.list_all = 1;
-
- hd_manual = hd_list2(hd_data, hw_items, 1);
- for(hd = hd_manual; hd && maps < sizeof map / sizeof *map; hd = hd->next) {
- if(!hd->unix_dev_name) continue;
-
- if(hd->status.available == status_yes) {
- /* check if we already have an active device with the same name */
- for(broken = u = 0; u < maps; u++) {
- if(!strcmp(map[u].hd->unix_dev_name, hd->unix_dev_name)) {
- map[u].unknown = 1;
- broken = 1;
- }
- }
- if(broken) continue;
-
- /* ensure we really can tell different devices apart */
- if(get_same_block_dev(hd_manual, hd, status_yes)) {
- map[maps].hd = hd;
- map[maps].unknown = 1;
- }
- else {
- map[maps].hd = hd;
- }
- maps++;
- }
- }
-
- /* ok, we have a list of all new devs */
-
- for(u = 0; u < maps; u++) {
- if(map[u].unknown) {
- printf("%s\n", map[u].hd->unix_dev_name);
- }
- else {
- first = 1;
- for(hd2 = hd_manual; (hd2 = get_same_block_dev(hd2, map[u].hd, status_no)); hd2 = hd2->next) {
- if(hd2->unix_dev_name && strcmp(map[u].hd->unix_dev_name, hd2->unix_dev_name)) {
- printf("%s\t%s", first ? map[u].hd->unix_dev_name : "", hd2->unix_dev_name);
- first = 0;
- }
- }
- if(!first) printf("\n");
- }
-
- }
-
-}
-
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <getopt.h>
-
-#include "hd.h"
-#include "hd_int.h"
-
-struct option options[] = {
- { "help", 0, NULL, 'h' },
- { "verbose", 0, NULL, 'v' },
- { "version", 0, NULL, 400 },
- { "show", 1, NULL, 500 },
- { "list", 0, NULL, 501 },
- { "cfg", 1, NULL, 502 },
- { "avail", 1, NULL, 503 },
- { "need", 1, NULL, 504 },
- { "new", 0, NULL, 505 },
- { "fast", 0, NULL, 506 },
- { "silent", 0, NULL, 507 },
- { "boot", 0, NULL, 508 },
- { "active", 1, NULL, 509 },
- { "only", 1, NULL, 510 },
- { "sys", 0, NULL, 1000 + hw_sys },
- { "cpu", 0, NULL, 1000 + hw_cpu },
- { "keyboard", 0, NULL, 1000 + hw_keyboard },
- { "braille", 0, NULL, 1000 + hw_braille },
- { "mouse", 0, NULL, 1000 + hw_mouse },
- { "joystick", 0, NULL, 1000 + hw_joystick },
- { "printer", 0, NULL, 1000 + hw_printer },
- { "scanner", 0, NULL, 1000 + hw_scanner },
- { "chipcard", 0, NULL, 1000 + hw_chipcard },
- { "monitor", 0, NULL, 1000 + hw_monitor },
- { "tv", 0, NULL, 1000 + hw_tv },
- { "gfxcard", 0, NULL, 1000 + hw_display },
- { "framebuffer", 0, NULL, 1000 + hw_framebuffer },
- { "camera", 0, NULL, 1000 + hw_camera },
- { "sound", 0, NULL, 1000 + hw_sound },
- { "storage-ctrl", 0, NULL, 1000 + hw_storage_ctrl },
- { "storage_ctrl", 0, NULL, 1000 + hw_storage_ctrl },
- { "netcard", 0, NULL, 1000 + hw_network_ctrl },
- { "network-ctrl", 0, NULL, 1000 + hw_network_ctrl },
- { "network_ctrl", 0, NULL, 1000 + hw_network_ctrl },
- { "isdn", 0, NULL, 1000 + hw_isdn },
- { "modem", 0, NULL, 1000 + hw_modem },
- { "network", 0, NULL, 1000 + hw_network },
- { "disk", 0, NULL, 1000 + hw_disk },
- { "partition", 0, NULL, 1000 + hw_partition },
- { "cdrom", 0, NULL, 1000 + hw_cdrom },
- { "floppy", 0, NULL, 1000 + hw_floppy },
- { "update", 0, NULL, 1000 + hw_manual },
- { "usb-ctrl", 0, NULL, 1000 + hw_usb_ctrl },
- { "usb_ctrl", 0, NULL, 1000 + hw_usb_ctrl },
- { "usb", 0, NULL, 1000 + hw_usb },
- { "bios", 0, NULL, 1000 + hw_bios },
- { "pci", 0, NULL, 1000 + hw_pci },
- { "isapnp", 0, NULL, 1000 + hw_isapnp },
- { "bridge", 0, NULL, 1000 + hw_bridge },
- { "hub", 0, NULL, 1000 + hw_hub },
- { "scsi", 0, NULL, 1000 + hw_scsi },
- { "ide", 0, NULL, 1000 + hw_ide },
- { "memory", 0, NULL, 1000 + hw_memory },
- { "dvb", 0, NULL, 1000 + hw_dvb },
- { "pcmcia", 0, NULL, 1000 + hw_pcmcia },
- { "pcmcia_ctrl", 0, NULL, 1000 + hw_pcmcia_ctrl },
- { "ieee1394", 0, NULL, 1000 + hw_ieee1394 },
- { "firewire", 0, NULL, 1000 + hw_ieee1394 },
- { "ieee1394_ctrl", 0, NULL, 1000 + hw_ieee1394_ctrl },
- { "firewire_ctrl", 0, NULL, 1000 + hw_ieee1394_ctrl },
- { "hotplug", 0, NULL, 1000 + hw_hotplug },
- { "hotplug_ctrl", 0, NULL, 1000 + hw_hotplug_ctrl },
- { "zip", 0, NULL, 1000 + hw_zip },
- { "pppoe", 0, NULL, 1000 + hw_pppoe },
- { "dsl", 0, NULL, 1000 + hw_dsl },
- { "wlan", 0, NULL, 1000 + hw_wlan },
- { "block", 0, NULL, 1000 + hw_block },
- { "tape", 0, NULL, 1000 + hw_tape },
- { "vbe", 0, NULL, 1000 + hw_vbe },
- { "bluetooth", 0, NULL, 1000 + hw_bluetooth },
- { "all", 0, NULL, 1000 + hw_all },
- { }
-};
-
-int verbose = 0;
-hd_hw_item_t scan_item[100] = { };
-unsigned scan_items = 0;
-int found_items = 0;
-
-struct {
- unsigned show:1;
- unsigned scan:1;
- unsigned list:1;
- unsigned config_cfg:1;
- unsigned config_avail:1;
- unsigned config_need:1;
- unsigned config_active:1;
- unsigned new:1;
- unsigned fast:1;
- unsigned silent:1;
- unsigned boot:1;
- str_list_t *only;
-} opt;
-
-void help(void);
-int do_scan(hd_hw_item_t *items);
-int do_show(char *id);
-int do_list(hd_hw_item_t *items);
-int do_config(int type, char *val, char *id);
-int fast_ok(hd_hw_item_t *items);
-int has_item(hd_hw_item_t *items, hd_hw_item_t item);
-int has_hw_class(hd_t *hd, hd_hw_item_t *items);
-
-
-int main(int argc, char **argv)
-{
- int rc = 0;
-
-#ifndef LIBHD_TINY
-
- char *id = NULL;
- char *config_cfg = NULL;
- char *config_avail = NULL;
- char *config_need = NULL;
- char *config_active = NULL;
- int i;
- int ok = 0;
- FILE *f;
-
- opterr = 0;
-
- while((i = getopt_long(argc, argv, "hv", options, NULL)) != -1) {
- switch(i) {
- case 'v':
- verbose++;
- break;
-
- case 400:
- printf("%s\n", hd_version());
- ok = 1;
- break;
-
- case 500:
- opt.show = 1;
- id = optarg;
- break;
-
- case 501:
- opt.list = 1;
- break;
-
- case 502:
- opt.config_cfg = 1;
- config_cfg = optarg;
- break;
-
- case 503:
- opt.config_avail = 1;
- config_avail = optarg;
- break;
-
- case 504:
- opt.config_need = 1;
- config_need = optarg;
- break;
-
- case 505:
- opt.new = 1;
- break;
-
- case 506:
- opt.fast = 1;
- break;
-
- case 507:
- opt.silent = 1;
- break;
-
- case 508:
- opt.boot = 1;
- break;
-
- case 509:
- opt.config_active = 1;
- config_active = optarg;
- break;
-
- case 510:
- if(*optarg) add_str_list(&opt.only, optarg);
- break;
-
- case 1000 ... 1100:
- opt.scan = 1;
- if(scan_items + 1 < sizeof scan_item / sizeof *scan_item) {
- scan_item[scan_items++] = i - 1000;
- }
- break;
-
- default:
- help();
- return 1;
- }
- }
-
- scan_item[scan_items] = 0;
-
- if(opt.scan && !opt.list) {
- if(argv[optind] || !scan_items) return help(), 1;
- rc = do_scan(scan_item);
- if(found_items) {
- unlink(HARDWARE_DIR "/.update"); /* the old file */
- unlink(HARDWARE_UNIQUE_KEYS "/.update"); /* so we trigger a rescan */
- if((f = fopen(HARDWARE_UNIQUE_KEYS "/.update", "a"))) fclose(f);
- }
- ok = 1;
- }
-
- if(opt.show) {
- do_show(id);
- ok = 1;
- }
-
- if(opt.list) {
- do_list(scan_item);
- ok = 1;
- }
-
- if(opt.config_cfg) {
- if(!argv[optind]) return help(), 1;
- do_config(1, config_cfg, argv[optind]);
- ok = 1;
- }
-
- if(opt.config_avail) {
- if(!argv[optind]) return help(), 1;
- do_config(2, config_avail, argv[optind]);
- ok = 1;
- }
-
- if(opt.config_need) {
- if(!argv[optind]) return help(), 1;
- do_config(3, config_need, argv[optind]);
- ok = 1;
- }
-
- if(opt.config_active) {
- if(!argv[optind]) return help(), 1;
- do_config(4, config_active, argv[optind]);
- ok = 1;
- }
-
- if(!ok) help();
-
-#endif /* !defined(LIBHD_TINY) */
-
- return rc;
-}
-
-void help()
-{
- fprintf(stderr,
- "Usage: hwscan [options]\n"
- "Show information about currently known hardware.\n"
- " --list show list of known hardware\n"
- " --version show libhd version\n"
- " --silent don't show hardware config changes\n"
- " --boot run only if we haven't been disabled via 'hwprobe=-scan'\n"
- " --cfg=state id change 'configured' status; id is one of the\n"
- " ids from 'hwscan --list'\n"
- " state is one of new, no, yes\n"
- " --avail=state id change 'available' status\n"
- " --need=state id change 'needed' status\n"
- " --active=state id change 'active' status\n"
- " --hw_item probe for hw_item and update status info\n"
- " hw_item is one of:\n"
- " all, bios, block, bluetooth, braille, bridge, camera, cdrom, chipcard, cpu,\n"
- " disk, dsl, dvb, floppy, framebuffer, gfxcard, hub, ide, isapnp, isdn,\n"
- " joystick, keyboard, memory, modem, monitor, mouse, netcard, network,\n"
- " partition, pci, pcmcia, pcmcia-ctrl, pppoe, printer, scanner, scsi, smp,\n"
- " sound, storage-ctrl, sys, tape, tv, usb, usb-ctrl, vbe, wlan, zip\n"
- );
-}
-
-#ifndef LIBHD_TINY
-
-int do_scan(hd_hw_item_t *items)
-{
- int run_config = 0;
- hd_status_t status = { };
- hd_data_t *hd_data;
- hd_t *hd, *hd1;
- int err = 0;
-
- if(opt.fast) opt.fast = fast_ok(items);
-
- hd_data = calloc(1, sizeof *hd_data);
-
- if(opt.boot) {
- /* look if we have been disabled */
- hd_clear_probe_feature(hd_data, pr_all);
- hd_scan(hd_data);
- hd_set_probe_feature(hd_data, pr_scan);
- if(!hd_probe_feature(hd_data, pr_scan)) {
- hd_free_hd_data(hd_data);
- free(hd_data);
- return 0;
- }
- }
-
- hd_data->only = opt.only;
- opt.only = NULL;
-
- hd_data->flags.list_all = 1;
- hd_data->flags.fast = opt.fast;
-
- hd = hd_list2(hd_data, items, 1);
-
- if(hd) found_items = 1;
-
- for(hd1 = hd; hd1; hd1 = hd1->next) {
- err = hd_write_config(hd_data, hd1);
- if(verbose >= 2) {
- printf(
- "write=%d %s: (cfg=%s, avail=%s, need=%s, active=%s",
- err,
- hd1->unique_id,
- hd_status_value_name(hd1->status.configured),
- hd_status_value_name(hd1->status.available),
- hd_status_value_name(hd1->status.needed),
- hd_status_value_name(hd1->status.active)
- );
- if(hd1->unix_dev_name) {
- printf(", dev=%s", hd1->unix_dev_name);
- }
- printf(
- ") %s\n",
- hd1->model
- );
-
- }
- if(err) break;
- }
-
- if(err) {
- fprintf(stderr,
- "Error writing configuration for %s (%s)\n",
- hd1->unique_id,
- hd1->model
- );
- exit(1);
- }
-
- hd = hd_free_hd_list(hd);
-
- if(opt.new) {
- status.configured = status_new;
- }
- else {
- status.reconfig = status_yes;
- }
-
- hd = hd_list_with_status2(hd_data, items, status);
- if(hd) run_config = 1;
-
- if(verbose) {
- for(hd1 = hd; hd1; hd1 = hd1->next) {
- printf(
- "%s: (cfg=%s, avail=%s, need=%s, active=%s",
- hd1->unique_id,
- hd_status_value_name(hd1->status.configured),
- hd_status_value_name(hd1->status.available),
- hd_status_value_name(hd1->status.needed),
- hd_status_value_name(hd1->status.active)
- );
- if(hd1->unix_dev_name) {
- printf(", dev=%s", hd1->unix_dev_name);
- }
- printf(
- ") %s\n",
- hd1->model
- );
- }
- }
- else if(!opt.silent) {
- for(hd1 = hd; hd1; hd1 = hd1->next) printf("%s\n", hd1->unique_id);
- }
-
- hd = hd_free_hd_list(hd);
-
- hd_free_hd_data(hd_data);
- free(hd_data);
-
- return run_config ^ 1;
-}
-
-
-int do_show(char *id)
-{
- hd_data_t *hd_data;
- hd_t *hd;
-
- hd_data = calloc(1, sizeof *hd_data);
-
- if ( id[0] == '/' ){
- int nr=0;
- char *_id = 0;
- hd_t *hd_manual;
-
- hd_manual = hd_list(hd_data, hw_manual, 1, NULL);
- for(hd = hd_manual; hd; hd = hd->next) {
- if(hd->status.available != status_yes) continue;
- if(!search_str_list(hd->unix_dev_names, id)) continue;
- _id = hd->unique_id;
- nr++;
- }
-
- if ( nr == 1 ) /* > 1 means our database is not okay */
- hd = hd_read_config(hd_data, _id);
- }else
- hd = hd_read_config(hd_data, id);
-
- if(hd) {
- hd_data->debug = -1;
- hd_dump_entry(hd_data, hd, stdout);
- hd = hd_free_hd_list(hd);
- }
- else {
- printf("no such hardware item: %s\n", id);
- }
-
- hd_free_hd_data(hd_data);
- free(hd_data);
-
- return 0;
-}
-
-
-int do_list(hd_hw_item_t *items)
-{
- hd_data_t *hd_data;
- hd_t *hd, *hd_manual;
- char *s;
- char status[64];
- int i;
-
- hd_data = calloc(1, sizeof *hd_data);
-
- hd_manual = hd_list(hd_data, hw_manual, 1, NULL);
-
- for(hd = hd_manual; hd; hd = hd->next) {
- if(opt.scan && ! has_hw_class(hd, items)) continue;
-
- strcpy(status, "(");
-
- i = 0;
- if(hd->status.configured && (s = hd_status_value_name(hd->status.configured))) {
- sprintf(status + strlen(status), "%scfg=%s", i ? ", " : "", s);
- i++;
- }
-
- if(hd->status.available && (s = hd_status_value_name(hd->status.available))) {
- sprintf(status + strlen(status), "%savail=%s", i ? ", " : "", s);
- i++;
- }
-
- if(hd->status.needed && (s = hd_status_value_name(hd->status.needed))) {
- sprintf(status + strlen(status), "%sneed=%s", i ? ", " : "", s);
- i++;
- }
-
- if(hd->status.active && (s = hd_status_value_name(hd->status.active))) {
- sprintf(status + strlen(status), "%sactive=%s", i ? ", " : "", s);
- i++;
- }
-
- strcat(status, ")");
-
- s = hd_hw_item_name(hd->hw_class);
- if(!s) s = "???";
-
- printf("%s: %-32s %-16s %s\n", hd->unique_id, status, s, hd->model);
- if(hd->config_string) {
- printf(" configured as: \"%s\"\n", hd->config_string);
- }
- }
-
- hd_free_hd_list(hd_manual);
-
- hd_free_hd_data(hd_data);
- free(hd_data);
-
- return 0;
-}
-
-
-int do_config(int type, char *val, char *id)
-{
- hd_data_t *hd_data;
- hd_t *hd;
- hd_status_value_t status = 0;
- int i;
- char *s;
-
- hd_data = calloc(1, sizeof *hd_data);
-
- if ( id[0] == '/' ){
- int nr=0;
- char *_id = 0;
- hd_t *hd_manual;
-
- hd_manual = hd_list(hd_data, hw_manual, 1, NULL);
- for(hd = hd_manual; hd; hd = hd->next) {
- if(hd->status.available != status_yes) continue;
- if(!search_str_list(hd->unix_dev_names, id)) continue;
- _id = hd->unique_id;
- nr++;
- }
- if ( nr == 1 )
- hd = hd_read_config(hd_data, _id);
- }else
- hd = hd_read_config(hd_data, id);
-
- if(hd) {
- for(i = 1; i < 8; i++) {
- s = hd_status_value_name(i);
- if(s && !strcmp(val, s)) {
- status = i;
- break;
- }
- }
- if(!status) {
- printf("invalid status: %s\n", val);
- }
- else {
- switch(type) {
- case 1:
- hd->status.configured = status;
- break;
-
- case 2:
- hd->status.available = status;
- break;
-
- case 3:
- hd->status.needed = status;
- break;
-
- case 4:
- hd->status.active = status;
- break;
- }
- hd_write_config(hd_data, hd);
- }
- hd = hd_free_hd_list(hd);
- }
- else {
- printf("no such hardware item: %s\n", id);
- }
-
- hd_free_hd_data(hd_data);
- free(hd_data);
-
- return 0;
-}
-
-
-/*
- * Check whether a 'fast' scan would suffice to re-check the presence
- * of all known hardware.
- */
-int fast_ok(hd_hw_item_t *items)
-{
- hd_data_t *hd_data;
- hd_t *hd, *hd1;
- int ok = 1;
-
- if(!has_item(items, hw_mouse) && !has_item(items, hw_storage_ctrl)) {
- return 1;
- }
-
- hd_data = calloc(1, sizeof *hd_data);
-
- hd_data->flags.list_all = 1;
-
- hd = hd_list(hd_data, hw_manual, 1, NULL);
-
- for(hd1 = hd; hd1; hd1 = hd1->next) {
- /* serial mice */
- if(hd1->hw_class == hw_mouse && hd1->bus.id == bus_serial) {
- ok = 0;
- break;
- }
- /* parallel zip */
- if(hd1->hw_class == hw_storage_ctrl && hd1->bus.id == bus_parallel) {
- ok = 0;
- break;
- }
- }
-
- hd_free_hd_data(hd_data);
- free(hd_data);
-
- return ok;
-}
-
-
-/* check if item is in items */
-int has_item(hd_hw_item_t *items, hd_hw_item_t item)
-{
- while(*items) if(*items++ == item) return 1;
-
- return 0;
-}
-
-
-/* check if one of items is in hw_class */
-int has_hw_class(hd_t *hd, hd_hw_item_t *items)
-{
- while(*items) if(hd_is_hw_class(hd, *items++)) return 1;
-
- return 0;
-}
-
-
-#endif /* !defined(LIBHD_TINY) */
+++ /dev/null
-
-/* hwscan front end
- Copyright 2004 by SUSE (<adrian@suse.de>) */
-
-#include <sys/types.h>
-#include <sys/ipc.h>
-#include <sys/msg.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <time.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#include "init_message.h"
-
-#define TIMEOUT 2
-#define LONG_TIMEOUT 0
-#define BUFFERS 1024
-
-int main( int argc, char **argv )
-{
- int ret, i;
- key_t key = KEY;
- int msgid;
- int mode = 0;
- int dev_nr = 0;
- int lines = 0;
- int block, usb, firewire, pci;
- int dev_last_state[BUFFERS];
- int dev_counter[BUFFERS];
- char * command_device[NR_COMMANDS][BUFFERS];
- time_t command_device_last[NR_COMMANDS][BUFFERS];
- time_t last;
- char **commands;
- char **devices;
- char buffer[32];
- message m;
-
- // are we running already, maybe ?
- {
- do {
- ssize_t r;
- char b[1024];
- char link[1024];
- int fd = open( PID_FILE, O_RDONLY );
- if ( fd >= 0 && (r=read(fd,b,1023)) > 0 ){
- close(fd);
- b[r]='\0';
- snprintf(link, 1023, "/proc/%s/exe", b);
- if ( (r=readlink( link, b, 1023 )) > 0 ){
- b[r]='\0';
- if ( r<8 )
- unlink(PID_FILE);
- else if ( strcmp("/hwscand", b+strlen(b)-8) )
- unlink(PID_FILE);
- else
- exit(1);
- }else
- unlink(PID_FILE);
- }else if ( fd >= 0 )
- unlink(PID_FILE);
- } while ( 0 > (ret = open( PID_FILE, O_WRONLY|O_CREAT|O_EXCL, S_IRUSR|S_IWUSR ) ) );
- sprintf(buffer, "%d", getpid());
- if ( ret < 0 || write(ret,buffer,strlen(buffer)) <= 0 ){
- perror("hwscand: unable to write pid file "PID_FILE);
- exit(1);
- }
- close(ret);
- }
-
- // initialize ...
- for ( i=0; i<NR_COMMANDS; i++ ){
- command_device[i][0] = 0;
- command_device_last[i][0] = 1;
- }
-
- last=block=usb=firewire=pci=0;
- commands = (char**) malloc( BUFFERS * sizeof(char*) );
- devices = (char**) malloc( BUFFERS * sizeof(char*) );
-
- msgid = msgget(key, IPC_CREAT | 0600);
- if (msgid < 0) {
- perror("msgget");
- exit(1);
- }
-
- while (1) {
- if ( last || dev_nr )
- mode = IPC_NOWAIT;
- else
- mode = 0;
-
- if( msgrcv(msgid, &m, MESSAGE_BUFFER, 1, mode) >= 0 ){
- char *p = m.mtext;
-
- if ( p == 0 ){
- fprintf( stderr, "hwscand: error, zero sized message\n" );
- }else{
- if ( p[0] == 'S' && strlen(p) > 1 ){
- // scan calls
- char z[2];
- int c;
- z[0] = *(p+1);
- z[1] = '\0';
- c = atoi(z);
- if ( c < NR_COMMANDS ){
- if ( ! command_with_device[c] ){
- last = time(0L);
- if ( LONG_TIMEOUT+command_device_last[c][0] < time(0L) )
- command_device_last[c][0] = 0;
- }else
- for ( i=0; i<BUFFERS; i++ ){
- if ( !command_device[c][i] ){
- last = time(0L);
- command_device[c][i] = strdup(p+2);
- command_device[c][i+1] = 0;
- command_device_last[c][i] = 0;
- break;
- }else if ( !strcmp(command_device[c][i], p+2) ){
- last = time(0L);
- if ( LONG_TIMEOUT+command_device_last[c][i] < time(0L) )
- command_device_last[c][i] = 0;
- break;
- }
- }
- }
- }
- if ( p[0] == 'C' && lines < BUFFERS ){
- last = time(0L);
- // config calls
- commands[lines] = strdup(p+1);
- lines++;
- }
- if ( p[0] == 'A' && dev_nr < BUFFERS ){
- // add scan devices
- devices[dev_nr] = strdup(p+1);
- dev_last_state[dev_nr] = 0;
- dev_counter[dev_nr] = 0;
- dev_nr++;
- }
- if ( p[0] == 'R' && dev_nr < BUFFERS ){
- for ( i=0; i<dev_nr; i++ ){
- if ( !strcmp(p+1, devices[i]) ){
- int j;
- free(devices[i]);
- for ( j=i; j+1<dev_nr; j++ ){
- devices[j] = devices[j+1];
- dev_last_state[j] = dev_last_state[j+1];
- dev_counter[j] = dev_counter[j+1];
- }
- dev_nr--;
- }
- }
- }
- }
-#if DEBUG
- printf("CALL RECEIVED %s\n", p);
-#endif
- }else{
- // we do this only in scanning mode ...
-
- sleep(1);
- for ( i=0; i<dev_nr; i++ ){
- if (dev_counter[i]<0) continue;
- dev_counter[i]++;
- if ( dev_counter[i] > 5 ){
- int fd;
- char buf[MESSAGE_BUFFER];
- dev_counter[i] = 0;
- fd = open( devices[i], O_RDONLY );
- strcpy( buf, "/sbin/hwscan --fast --partition --only=");
- strcat( buf, devices[i] );
- if ( fd < 0 ){
- if ( dev_last_state[i] )
- system(buf);
- dev_last_state[i] = 0;
- }else{
- if ( dev_last_state[i] == 0)
- system(buf);
- dev_last_state[i] = 1;
- close(fd);
- }
- }
- }
- }
-
- if ( last && (last+TIMEOUT <= time(0L)) ){
- char buf[MESSAGE_BUFFER * NR_COMMANDS];
- int run_really = 0;
-
- last=0;
- strcpy( buf, "/sbin/hwscan --fast --boot --silent" );
- for ( i=0; i<NR_COMMANDS; i++ ){
- if ( command_with_device[i] == 0 &&
- command_device_last[i][0] == 0 ){
- command_device_last[i][0] = time(0L);
- strcat( buf, " --");
- strcat( buf, command_args[i] );
- run_really = 1;
- } else {
- int j;
- int commappended = 0;
-
- for ( j=0; j<BUFFERS; j++ ){
- if ( !command_device[i][j] )
- break;
- if ( command_device_last[i][j] == 0 ){
- if (!commappended) {
- strcat( buf, " --");
- strcat( buf, command_args[i] );
- commappended = 1;
- }
- strcat( buf, " --only=" );
- strcat( buf, command_device[i][j] );
- command_device_last[i][j] = time(0L);
- run_really = 1;
- if (strlen(buf) > sizeof(buf) - MESSAGE_BUFFER)
- break;
- }
- }
- }
- if (strlen(buf) > sizeof(buf) - MESSAGE_BUFFER) {
- last = time(0L); /* call me again */
- break;
- }
- }
-
- if ( run_really ){
-#if DEBUG
- printf("RUN %s\n", buf);
-#endif
- system(buf);
-#if DEBUG
- printf("RUN quit %s\n", buf);
-#endif
- }
- if ( lines ){
- for (i=0; i<lines; i++){
-#if DEBUG
- printf("CALL DIRECT %s\n", commands[i]);
-#endif
- system(commands[i]);
-#if DEBUG
- printf("CALL quit %s\n", commands[i]);
-#endif
- free(commands[i]);
- }
- lines=0;
- }
- }
- }
-
- return 0;
-}
+++ /dev/null
-
-/* hwscan front end
- Copyright 2004 by SUSE (<adrian@suse.de>) */
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <sys/ipc.h>
-#include <sys/msg.h>
-#include <signal.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <string.h>
-#include <stdio.h>
-
-#include "init_message.h"
-
-int main( int argc, char **argv )
-{
- int ret;
- unsigned short i;
- key_t key = KEY;
- int msgid;
- message m;
- char *device = argv[2];
-
- if ( argc < 2 ){
- fprintf( stderr, "help: hwscanqueue hwscan-commands\n" );
- fprintf( stderr, "help: commands:\n" );
- for ( i=0; i<NR_COMMANDS; i++ ){
- fprintf( stderr, " --%s", command_args[i] );
- if ( command_with_device[i] )
- fprintf( stderr, " device" );
- fprintf( stderr, "\n");
- }
- fprintf( stderr, " --avail=yes/no id\n" );
- fprintf( stderr, " --scan=device\n" );
- fprintf( stderr, " --stop=device\n" );
- exit(1);
- }
-
- if ( !strncmp("--cfg=", argv[1], 6) && argc>2 )
- snprintf( m.mtext, MESSAGE_BUFFER, "C/sbin/hwscan %s %s", argv[1], argv[2] );
- else if ( !strncmp("--avail=", argv[1], 8) && argc>2 )
- snprintf( m.mtext, MESSAGE_BUFFER, "C/sbin/hwscan %s %s", argv[1], argv[2] );
- else if ( !strncmp("--scan=", argv[1], 7) )
- snprintf( m.mtext, MESSAGE_BUFFER, "A%s", argv[1]+7 );
- else if ( !strncmp("--stop=", argv[1], 7) )
- snprintf( m.mtext, MESSAGE_BUFFER, "R%s", argv[1]+7 );
- else if ( !strncmp("--", argv[1], 2) ){
- for ( i=0; i<NR_COMMANDS; i++ ){
- if ( !strcmp(argv[1]+2,command_args[i]) ){
-#if DEBUG
- printf("COMMAND %s\n", command_args[i] );
-#endif
- snprintf( m.mtext, MESSAGE_BUFFER, "S%d", i );
- if (command_with_device[i]){
- if ( !device ){
- fprintf(stderr, "need a device for this command\n");
- exit(1);
- }
- strncat( m.mtext, device, MESSAGE_BUFFER-3 );
- }
- break;
- }
- }
- if ( i>=NR_COMMANDS ){
- fprintf(stderr, "unknown command\n");
- exit(1);
- }
- }else
- exit(1);
-
- if ( (msgid = msgget(key, IPC_CREAT | 0600)) < 0 ){
- perror("unable to init.");
- exit(1);
- }
- m.mtype = 1;
- ret = msgsnd( msgid, &m, MESSAGE_BUFFER, IPC_NOWAIT);
-#if DEBUG
- printf("SEND %s, return %d\n", m.mtext, ret );
-#endif
-
- if ( ret < 0 )
- perror("message send failed");
- else{
- // success ... start hwscand, if it is not yet running
- ssize_t r;
- char buffer[1024];
- char link[1024];
- int fd = open( PID_FILE, O_RDONLY );
- if ( fd >= 0 && (r=read(fd,buffer,1023)) > 0 ){
- close(fd);
- buffer[r]='\0';
- snprintf(link, 1023, "/proc/%s/exe", buffer);
- if ( (r=readlink( link, buffer, 1023 )) > 0 ){
- buffer[r]='\0';
- if ( r<8 )
- fd=-1;
- else if ( strcmp("/hwscand", buffer+strlen(buffer)-8) )
- fd=-1;
- }else
- fd=-1;
- }else
- fd=-1;
-
- if ( fd < 0 ){
- pid_t pid;
- signal(SIGCHLD,SIG_IGN);
- pid=fork();
- if (pid==0){
- /* Change directory to allow clean shut-down */
- chdir("/");
- /* Close std fds */
- close(0);
- close(1);
- close(2);
- /* Start hwscand */
- execve("/sbin/hwscand", 0, 0);
- }
- }
- }
-
- exit(ret);
-}
-
+++ /dev/null
-#define MESSAGE_BUFFER 1024
-#define KEY 8024;
-#define PID_FILE "/var/run/hwscand.pid"
-
-// WARNING NEEDS TO BE <= 9
-#define NR_COMMANDS 7
-// WARNING NEEDS TO BE <= 9
-static const char *command_args[] = { "block", "partition", "usb", "firewire", "pci", "pcmcia", "bluetooth" };
-static const int command_with_device[] = { 1, 1, 0, 0, 0, 0, 0 };
-
-typedef struct msgbuf {
- long mtype;
- char mtext[MESSAGE_BUFFER+1];
-} message;
-
-#define DEBUG 0
-
+++ /dev/null
-#! /usr/bin/perl
-
-sub addr2line;
-
-$list = shift;
-$bin = shift;
-$ofs = shift;
-
-die "usage: mci data_file binary\n" unless -f($list);
-
-open F, $list;
-
-while(<F>) {
- if(/^;\s*(.+?)\s*$/) {
- @i = split ' ', $1;
- $i[0] = sprintf "%-24s", $i[0];
- $i[1] = addr2line $i[1];
- print "; ", join("\t", @i), "\n";
- next
- }
- @i = split;
-
- die "oops, format error" if @i > 3;
-
- if(@i == 1) {
- if($i[0] =~ /^>(\S+)/) {
- unshift @funcs, $1;
- }
- elsif($i[0] =~ /<(\S+)/) {
- if($funcs[0] eq $1) {
- shift @funcs
- }
- else {
- die "oops, strange data (line $.)\n"
- }
- }
- else {
- die "oops, format error"
- }
- }
- else {
- $func = $i[0];
- $addr = $i[1];
- $size = undef;
- $size = @i == 2 ? undef : $i[2];
-
- if(defined $size) {
- if(exists $mem{$addr}) {
- $x = addr2line $func;
- $y = addr2line ${$mem{$addr}}[1];
- print "malloc oops (line $.): mem $addr; old: $y, size ${$mem{$addr}}[0]; new: $x, size $size\n";
- }
- $mem{$addr} = [ $size, $func, @funcs ];
- delete $lfree{$addr};
- }
- else {
- if(!exists $mem{$addr}) {
- $xx = "";
- $first = 1;
- for $f ($func, @funcs) {
- $xx .= "<-" unless $first;
- $first = 0;
- $xx .= addr2line $f;
- }
- print "free oops (line $.): $addr ($xx) [last free: line $lfree{$addr}]\n";
- }
- delete $mem{$addr};
- $lfree{$addr} .= " $.";
- }
- }
-}
-
-for (sort keys %mem) {
- $total += oct(${$mem{$_}}[0]);
- $cnt++;
-
-# $x = `addr2line -s -e $bin ${$mem{$_}}[1]`;
-# chomp $x;
-# $x = $x =~ /\?{2}/ ? undef : "$x ";
- $x = addr2line ${$mem{$_}}[1];
-
- print "$_\t${$mem{$_}}[0]\t";
- $first = 1;
- for $f (@{$mem{$_}}[1..$#{$mem{$_}}]) {
- print "<-" unless $first;
- $first = 0;
- print addr2line $f;
- }
- print "\n"
-}
-
-printf "total: %u bytes in %u blocks\n", $total, $cnt;
-
-
-sub addr2line
-{
- my ($x, $y);
-
- return $_[0] unless $bin;
-
- $y = sprintf "0x%x", oct($_[0]) + $ofs;
-
- return $addr_cache{$y} if exists $addr_cache{$y};
-
- $x = `addr2line -s -e $bin $y`;
- chomp $x;
- $x = $x =~ /\?{2}/ ? $_[0] : $x;
-
- $addr_cache{$y} = $x;
-
- return $x;
-}
-
+++ /dev/null
-TOPDIR = ..
-SUBDIRS = hd isdn ids
-TARGETS = touch $(LIBHD) $(LIBHD_SO)
-CLEANFILES = $(LIBHD) $(LIBHD_D) $(LIBHD_SO) *.so *.so.* *.a
-
-.PHONY: touch
-
-include $(TOPDIR)/Makefile.common
-
-ifneq "$(findstring $(ARCH), i386 x86_64 ia64)" ""
-ifneq ($(LIBHD_BASE), libhd_tiny)
-SUBDIRS += x86emu int10
-endif
-endif
-
-#ifeq "$(findstring $(ARCH), i386 alpha)" ""
-#SUBDIRS := $(filter-out pnpdump, $(SUBDIRS))
-#endif
-
-$(LIBHD): $(OBJS)
- ar r $@ $?
- @rm -f $(LIBHD_D)
-
-ifdef SHARED_FLAGS
-$(LIBHD_SO): $(LIBHD)
- $(CC) -shared $(SO_LIBS) -Wl,--whole-archive $(LIBHD) -Wl,--no-whole-archive \
- -Wl,-soname=$(LIBHD_SONAME) \
- -o $(LIBHD_SO)
- ln -snf $(LIBHD_NAME) $(LIBHD_SONAME)
- ln -snf $(LIBHD_SONAME) $(LIBHD_BASE).so
-else
-$(LIBHD_SO):
-endif
-
-subdirs: touch
-
-touch:
- @touch -r $(LIBHD) $(LIBHD_D) 2>/dev/null || true
+++ /dev/null
-TOPDIR = ../..
-TARGETS = $(LIBHD_D)
-CLEANFILES = version.h
-
-include $(TOPDIR)/Makefile.common
-
-version.h: $(TOPDIR)/VERSION
- @echo "#define HD_VERSION_STRING \"`cat $(TOPDIR)/VERSION`\"" >$@
-
-hd.h: $(TOPDIR)/VERSION
- @perl -pi -e "s/define\s+HD_VERSION\s+\d+/define HD_VERSION\t$(LIBHD_MAJOR_VERSION)/" $@
-
-$(LIBHD_D): $(OBJS)
- ar r $(LIBHD) $?
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <termios.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <sys/time.h>
-#include <sys/ioctl.h>
-
-#include "hd.h"
-#include "hd_int.h"
-#include "adb.h"
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- * adb info
- *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- */
-
-#ifdef __PPC__
-
-void hd_scan_adb(hd_data_t *hd_data)
-{
- int i;
- unsigned u, adr = 0;
- hd_t *hd;
- str_list_t *sl;
-
- if(!hd_probe_feature(hd_data, pr_adb)) return;
-
- hd_data->module = mod_adb;
-
- /* some clean-up */
- remove_hd_entries(hd_data);
-
- PROGRESS(1, 0, "get info");
-
- for(sl = hd_data->klog; sl; sl = sl->next) {
- if(sscanf(sl->str, "<4>ADB mouse at %u, %*[a-z ] %i", &u, &i) == 2 && u < 32) {
- /* u: max 15 actually, but who cares... */
- if(!(adr & (1 << u))) {
- adr |= 1 << u;
- hd = add_hd_entry(hd_data, __LINE__, 0);
- hd->base_class.id = bc_mouse;
- hd->sub_class.id = sc_mou_bus;
- hd->bus.id = bus_adb;
- hd->slot = u;
-// hd->func = i;
- hd->unix_dev_name = new_str(DEV_MICE);
-
- hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0100);
- hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0300 + i);
- }
- }
-
- if(sscanf(sl->str, "<4>ADB keyboard at %u, %*[a-z ] %i", &u, &i) == 2 && u < 32) {
- /* u: max 15 actually, but who cares... */
- if(!(adr & (1 << u))) {
- adr |= 1 << u;
- hd = add_hd_entry(hd_data, __LINE__, 0);
- hd->base_class.id = bc_keyboard;
- hd->sub_class.id = 0;
- hd->bus.id = bus_adb;
- hd->slot = u;
-// hd->func = i;
-// hd->unix_dev_name = new_str(DEV_ADBMOUSE);
-
- hd->vendor.id = MAKE_ID(TAG_SPECIAL, 0x0100);
- hd->device.id = MAKE_ID(TAG_SPECIAL, 0x0200+i);
- }
- }
- }
-}
-
-#endif /* __PPC__ */
+++ /dev/null
-void hd_scan_adb(hd_data_t *hd_data);
+++ /dev/null
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-#include <fcntl.h>
-#include <byteswap.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#if defined(__i386__) || defined (__x86_64__) || defined(__ia64__)
-#include <sys/io.h>
-#endif
-typedef unsigned long kernel_ulong_t;
-#include <linux/types.h>
-#ifdef __UCLIBC__
-#include <linux/pci.h>
-#else
-#include <sys/pci.h>
-#endif
-
-#include "hd.h"
-#include "hd_int.h"
-#include "bios.h"
-#include "smbios.h"
-#include "klog.h"
-
-/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- * bios info
- *
- * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- */
-
-#if defined(__i386__) || defined (__x86_64__) || defined (__ia64__)
-
-static struct {
- int width;
- int height;
- char *vendor;
- char *name;
- char *version;
-} panel_data[] = {
- { 800, 600, "Fujitsu Siemens", "LiteLine", "LF6" },
- { 1024, 768, "ASUSTEK", "L2000D", NULL },
- { 1024, 768, "ASUSTeK Computer Inc.", "L8400C series Notebook PC", NULL },
- { 1024, 768, "ASUSTeK Computer Inc.", "S5N", NULL },
- { 1024, 768, "Acer", "TravelMate 720", NULL },
- { 1024, 768, "COMPAL", "N30T5", NULL },
- { 1024, 768, "Dell Computer Corporation", "Inspiron 5000", NULL },
- { 1024, 768, "Dell Computer Corporation", "Latitude C400", NULL },
- { 1024, 768, "Dell Computer Corporation", "Latitude C600", NULL },
- { 1024, 768, "Dell Computer Corporation", "Latitude CPt C400GT", NULL },
- { 1024, 768, "Hewlett-Packard", "HP OmniBook PC", "HP OmniBook 4150 B" },
- { 1280, 800, "Hewlett-Packard", "hp compaq nx9105 (DU367T#ABD)", "03" },
- { 1280, 800, "Hewlett-Packard", "Pavilion zv5000 (PA456EA#ABD)", "F.11" },
-#include "ibm-notebooks.h"
- { 1400, 1050, "IBM", "73geu99", NULL },
- { 1024, 768, "KDST", "KDS6KSUMO", NULL },
- { 1024, 768, "Sony Corporation", "PCG-F370(UC)", NULL },
- { 1024, 768, "Sony Corporation", "PCG-N505SN", NULL },
- { 1024, 768, "TOSHIBA", "S2400-103", NULL },
- { 1280, 800, "Acer", "Aspire 1520", NULL },
- { 1400, 1050, "Acer", "TravelMate 660", NULL },
- { 1400, 1050, "Dell Computer Corporation", "Inspiron 8000", NULL },
- { 1600, 1200, "Dell Computer Corporation", "Inspiron 8200", NULL },
- { 1600, 1200, "Dell Computer Corporation", "Latitude C840", NULL }
-};
-
-#define BIOS_TEST
-
-typedef struct {
- unsigned eax, ebx, ecx, edx, esi, edi, eip, es, iret, cli;
-} bios32_regs_t;
-
-static void read_memory(hd_data_t *hd_data, memory_range_t *mem);
-static void dump_memory(hd_data_t *hd_data, memory_range_t *mem, int sparse, char *label);
-static void get_pnp_support_status(memory_range_t *mem, bios_info_t *bt);
-static void smbios_get_info(hd_data_t *hd_data, memory_range_t *mem, bios_info_t *bt);
-static void get_fsc_info(hd_data_t *hd_data, memory_range_t *mem, bios_info_t *bt);
-static void add_panel_info(hd_data_t *hd_data, bios_info_t *bt);
-static void add_mouse_info(hd_data_t *hd_data, bios_info_t *bt);
-static unsigned char crc(unsigned char *mem, unsigned len);
-static int get_smp_info(hd_data_t *hd_data, memory_range_t *mem, smp_info_t *smp);
-static void parse_mpconfig(hd_data_t *hd_data, memory_range_t *mem, smp_info_t *smp);
-static int get_bios32_info(hd_data_t *hd_data, memory_range_t *mem, bios32_info_t *bios32);
-
-int detect_smp_bios(hd_data_t *hd_data)
-{
- bios_info_t *bt;
- hd_smbios_t *sm;
- hd_t *hd;
- int cpus;
-
- if(!hd_data->bios_ram.data) return -1; /* hd_scan_bios() not called */
-
- for(bt = NULL, hd = hd_data->hd; hd; hd = hd->next) {
- if(
- hd->base_class.id == bc_internal &&
- hd->sub_class.id == sc_int_bios &&
- hd->detail &&
- hd->detail->type == hd_detail_bios &&
- (bt = hd->detail->bios.data)
- ) {
- break;
- }
- }
-
- if(!bt) return -1;
-
- cpus = 0;
-
- /* look at smbios data in case there's no mp table */
- if(hd_data->smbios) {
- for(sm = hd_data->smbios; sm; sm = sm->next) {
- if(
- sm->any.type == sm_processor &&
- sm->processor.pr_type.id == 3 && /* cpu */
- sm->processor.cpu_status.id == 1 /* enabled */
- ) {
- cpus++;
- }
- }
- ADD2LOG(" smp detect: mp %d cpus, smbios %d cpus\n", bt->smp.ok ? bt->smp.cpus_en : 0, cpus);
- }
-
- if(bt->smp.ok && bt->smp.cpus_en) cpus = bt->smp.cpus_en;
-
- return cpus;
-}
-
-
-void hd_scan_bios(hd_data_t *hd_data)
-{
- hd_t *hd;
- bios_info_t *bt;
- char *s;
- unsigned char *bios_ram;
- unsigned u, u1;
- memory_range_t mem;
- unsigned smp_ok;
-#ifndef LIBHD_TINY
- vbe_info_t *vbe;
- vbe_mode_info_t *mi;
- hd_res_t *res;
- str_list_t *sl;
-#endif
-
- if(!hd_probe_feature(hd_data, pr_bios)) return;
-
- /* we better do nothing on a SGI Altix machine */
- if(hd_is_sgi_altix(hd_data)) return;
-
- hd_data->module = mod_bios;
-
- /* some clean-up */
- remove_hd_entries(hd_data);
-
- PROGRESS(1, 0, "cmdline");
-
- hd = add_hd_entry(hd_data, __LINE__, 0);
- hd->base_class.id = bc_internal;
- hd->sub_class.id = sc_int_bios;
- hd->detail = new_mem(sizeof *hd->detail);
- hd->detail->type = hd_detail_bios;
- hd->detail->bios.data = bt = new_mem(sizeof *bt);
-
- /*
- * first, look for APM support
- */
- if((s = get_cmd_param(hd_data, 1))) {
- if(strlen(s) >= 10) {
- bt->apm_supported = 1;
- bt->apm_ver = hex(s, 1);
- bt->apm_subver = hex(s + 1, 1);
- bt->apm_bios_flags = hex(s + 2, 2);
- /*
- * Bitfields for APM flags (from Ralf Brown's list):
- * Bit(s) Description
- * 0 16-bit protected mode interface supported
- * 1 32-bit protected mode interface supported
- * 2 CPU idle call reduces processor speed
- * 3 BIOS power management disabled
- * 4 BIOS power management disengaged (APM v1.1)
- * 5-7 reserved
- */
- bt->apm_enabled = (bt->apm_bios_flags & 8) ? 0 : 1;
-
- bt->vbe_ver = hex(s + 4, 2);
- bt->vbe_ver = (((bt->vbe_ver >> 4) & 0xf) << 8) + (bt->vbe_ver & 0xf);
- bt->vbe_video_mem = hex(s + 6, 4) << 16;
- }
-
- s = free_mem(s);
- }
-
- if((s = get_cmd_param(hd_data, 2))) {
- if(strlen(s) > 8) {
- if(s[8] == '.') bt->lba_support = 1;
- }
-
- s = free_mem(s);
- }
-
- PROGRESS(1, 1, "apm");
-
- if(!bt->apm_ver) {
- str_list_t *sl0, *sl;
-
- sl0 = read_file(PROC_APM, 0, 0);
- if(sl0) {
- bt->apm_supported = 1;
- bt->apm_enabled = 1;
- ADD2LOG("----- %s -----\n", PROC_APM);
- for(sl = sl0; sl; sl = sl->next) {
- ADD2LOG(" %s", sl->str);
- }
- ADD2LOG("----- %s end -----\n", PROC_APM);
- }
- free_str_list(sl0);
- }
-
- /*
- * get the i/o ports for the parallel & serial interfaces from the BIOS
- * memory area starting at 0x40:0
- */
- PROGRESS(2, 0, "ram");
-
- hd_data->bios_ram.start = BIOS_RAM_START;
- hd_data->bios_ram.size = BIOS_RAM_SIZE;
- read_memory(hd_data, &hd_data->bios_ram);
-
- hd_data->bios_rom.start = BIOS_ROM_START;
- hd_data->bios_rom.size = BIOS_ROM_SIZE;
- read_memory(hd_data, &hd_data->bios_rom);
-
- if(hd_data->bios_ram.data) {
- bios_ram = hd_data->bios_ram.data;
-
- bt->ser_port0 = (bios_ram[1] << 8) + bios_ram[0];
- bt->ser_port1 = (bios_ram[3] << 8) + bios_ram[2];
- bt->ser_port2 = (bios_ram[5] << 8) + bios_ram[4];
- bt->ser_port3 = (bios_ram[7] << 8) + bios_ram[6];
-
- bt->par_port0 = (bios_ram[ 9] << 8) + bios_ram[ 8];
- bt->par_port1 = (bios_ram[0xb] << 8) + bios_ram[0xa];
- bt->par_port2 = (bios_ram[0xd] << 8) + bios_ram[0xc];
-
- bt->led.scroll_lock = bios_ram[0x97] & 1;
- bt->led.num_lock = (bios_ram[0x97] >> 1) & 1;
- bt->led.caps_lock = (bios_ram[0x97] >> 2) & 1;
- bt->led.ok = 1;
-
- /*
- * do some consistency checks:
- *
- * ports must be < 0x1000 and not appear twice
- */
- if(bt->ser_port0 >= 0x1000) bt->ser_port0 = 0;
-
- if(
- bt->ser_port1 >= 0x1000 ||
- bt->ser_port1 == bt->ser_port0
- ) bt->ser_port1 = 0;
-
- if(
- bt->ser_port2 >= 0x1000 ||
- bt->ser_port2 == bt->ser_port0 ||
- bt->ser_port2 == bt->ser_port1
- ) bt->ser_port2 = 0;
-
- if(
- bt->ser_port3 >= 0x1000 ||
- bt->ser_port3 == bt->ser_port0 ||
- bt->ser_port3 == bt->ser_port1 ||
- bt->ser_port3 == bt->ser_port2
- ) bt->ser_port3 = 0;
-
- if(bt->par_port0 >= 0x1000) bt->par_port0 = 0;
-
- if(
- bt->par_port1 >= 0x1000 ||
- bt->par_port1 == bt->par_port0
- ) bt->par_port1 = 0;
-
- if(
- bt->par_port2 >= 0x1000 ||
- bt->par_port2 == bt->par_port0 ||
- bt->par_port2 == bt->par_port1
- ) bt->par_port2 = 0;
-
- ADD2LOG(" bios: %u disks\n", bios_ram[0x75]);
-
- bt->low_mem_size = ((bios_ram[0x14] << 8) + bios_ram[0x13]) << 10;
-
- if(bt->low_mem_size) {
- ADD2LOG(" bios: %uk low mem\n", bt->low_mem_size >> 10);
- }
-
- /* too unusual */
- if(bt->low_mem_size >= (768 << 10) || bt->low_mem_size < (384 << 10)) {
- bt->low_mem_size = 0;
- }
-
- hd_data->bios_ebda.start = hd_data->bios_ebda.size = 0;
- hd_data->bios_ebda.data = free_mem(hd_data->bios_ebda.data);
- u = ((bios_ram[0x0f] << 8) + bios_ram[0x0e]) << 4;
- if(u) {
- hd_data->bios_ebda.start = u;
- hd_data->bios_ebda.size = 1; /* just one byte */
- read_memory(hd_data, &hd_data->bios_ebda);
- if(hd_data->bios_ebda.data) {
- u1 = hd_data->bios_ebda.data[0];
- if(u1 > 0 && u1 <= 64) { /* be sensible, typically only 1k */
- u1 <<= 10;
- if(u + u1 <= (1 << 20)) {
- hd_data->bios_ebda.size = u1;
- read_memory(hd_data, &hd_data->bios_ebda);
- }
- }
- }
- }
-
- if(hd_data->bios_ebda.data) {
- ADD2LOG(
- " bios: EBDA 0x%05x bytes at 0x%05x\n",
- hd_data->bios_ebda.size, hd_data->bios_ebda.start
- );
- }
- }
-
- /*
- * read the bios rom and look for useful things there...
- */
- PROGRESS(2, 0, "rom");
-
- if(hd_data->bios_rom.data) {
- get_pnp_support_status(&hd_data->bios_rom, bt);
- smbios_get_info(hd_data, &hd_data->bios_rom, bt);
- get_fsc_info(hd_data, &hd_data->bios_rom, bt);
- add_panel_info(hd_data, bt);
- add_mouse_info(hd_data, bt);
- }
-
- PROGRESS(3, 0, "smp");
-
- smp_ok = 0;
-
- mem = hd_data->bios_ebda;
- smp_ok = get_smp_info(hd_data, &mem, &bt->smp);
-
- if(!smp_ok) {
- mem = hd_data->bios_rom;
- if(mem.data) {
- mem.size -= 0xf0000 - mem.start;
- mem.data += 0xf0000 - mem.start;
- mem.start = 0xf0000;
- if(mem.size < (1 << 20)) smp_ok = get_smp_info(hd_data, &mem, &bt->smp);
- }
- }
-
- if(!smp_ok) {
- mem.size = 1 << 10;
- mem.start = 639 << 10;
- mem.data = NULL;
- read_memory(hd_data, &mem);
- if(mem.data) smp_ok = get_smp_info(hd_data, &mem, &bt->smp);
- mem.data = free_mem(mem.data);
- }
-
- if(bt->smp.ok && bt->smp.mpconfig) {
- mem.start = bt->smp.mpconfig;
- mem.size = 1 << 16;
- mem.data = NULL;
- read_memory(hd_data, &mem);
- parse_mpconfig(hd_data, &mem, &bt->smp);
- mem.data = free_mem(mem.data);
- }
-
- if((hd_data->debug & HD_DEB_BIOS)) {
- dump_memory(hd_data, &hd_data->bios_ram, 0, "BIOS data");
- dump_memory(hd_data, &hd_data->bios_ebda, hd_data->bios_ebda.size <= (8 << 10) ? 0 : 1, "EBDA");
- // dump_memory(hd_data, &hd_data->bios_rom, 1, "BIOS ROM");
-
- if(bt->smp.ok && bt->smp.mpfp) {
- mem.start = bt->smp.mpfp;
- mem.size = 0x10;
- mem.data = NULL;
- read_memory(hd_data, &mem);
- dump_memory(hd_data, &mem, 0, "MP FP");
- mem.data = free_mem(mem.data);
- }
-
- if(bt->smp.ok && bt->smp.mpconfig && bt->smp.mpconfig_size) {
- mem.start = bt->smp.mpconfig;
- mem.size = bt->smp.mpconfig_size;
- mem.data = NULL;
- read_memory(hd_data, &mem);
- dump_memory(hd_data, &mem, 0, "MP config table");
- mem.data = free_mem(mem.data);
- }
- }
-
-#ifndef LIBHD_TINY
- if(hd_probe_feature(hd_data, pr_bios_vesa)) {
- PROGRESS(4, 0, "vbe");
-
- vbe = &bt->vbe;
- vbe->ok = 0;
-
- if(!hd_data->klog) read_klog(hd_data);
- for(sl = hd_data->klog; sl; sl = sl->next) {
- if(sscanf(sl->str, "<6>PCI: Using configuration type %u", &u) == 1) {
- hd_data->pci_config_type = u;
- ADD2LOG(" klog: pci config type %u\n", hd_data->pci_config_type);
- }
- }
-
- get_vbe_info(hd_data, vbe);
-
- if(vbe->ok) {
- bt->vbe_ver = vbe->version;
- }
-
- if(vbe->ok && vbe->fb_start) {
- hd = add_hd_entry(hd_data, __LINE__, 0);
- hd->base_class.id = bc_framebuffer;
- hd->sub_class.id = sc_fb_vesa;
-
- hd_set_hw_class(hd, hw_vbe);
-
-#if 0
- hd->detail = new_mem(sizeof *hd->detail);
- hd->detail->type = hd_detail_bios;
- hd->detail->bios.data = bt = new_mem(sizeof *bt);
-#endif
-
- hd->vendor.name = new_str(vbe->vendor_name);
- hd->device.name = new_str(vbe->product_name);
- hd->sub_vendor.name = new_str(vbe->oem_name);
- hd->revision.name = new_str(vbe->product_revision);
-
- res = add_res_entry(&hd->res, new_mem(sizeof *res));
- res->phys_mem.type = res_phys_mem;
- res->phys_mem.range = vbe->memory;
-
- res = add_res_entry(&hd->res, new_mem(sizeof *res));
- res->mem.type = res_mem;
- res->mem.base = vbe->fb_start;
- res->mem.range = vbe->memory;
- res->mem.access = acc_rw;
- res->mem.enabled = 1;
-
- if(vbe->mode) {
- for(u = 0; u < vbe->modes; u++) {
- mi = vbe->mode + u;
- if(
- (mi->attributes & 1) && /* mode supported */
- mi->fb_start &&
- mi->pixel_size != -1u /* text mode */
- ) {
- res = add_res_entry(&hd->res, new_mem(sizeof *res));
- res->framebuffer.type = res_framebuffer;
- res->framebuffer.width = mi->width;
- res->framebuffer.bytes_p_line = mi->bytes_p_line;
- res->framebuffer.height = mi->height;
- res->framebuffer.colorbits = mi->pixel_size;
- res->framebuffer.mode = mi->number + 0x200;
- }
- }
- }
-
-#if 0
- if(
- hd->vend_name &&
- !strcmp(hd->vend_name, "Matrox") &&
- hd->device.name &&
- (
- strstr(hd->dev_name, "G200") ||
- strstr(hd->dev_name, "G400") ||
- strstr(hd->dev_name, "G450")
- )
- ) {
- hd->broken = 1;
- }
-#endif
-
- }
- }
-#endif /* LIBHD_TINY */
-
- PROGRESS(5, 0, "32");
-
- mem = hd_data->bios_rom;
- if(mem.data) {
- mem.size -= 0xe0000 - mem.start;
- mem.data += 0xe0000 - mem.start;
- mem.start = 0xe0000;
- if(mem.size < (1 << 20)) get_bios32_info(hd_data, &mem, &bt->bios32);
- }
-
- if(bt->bios32.ok) {
- mem = hd_data->bios_rom;
-
- if(
- mem.start