Home | History | Annotate | Line # | Download | only in acpihelp
ahmain.c revision 1.1.1.1
      1 /******************************************************************************
      2  *
      3  * Module Name: ahmain - Main module for the acpi help utility
      4  *
      5  *****************************************************************************/
      6 
      7 /*
      8  * Copyright (C) 2000 - 2011, Intel Corp.
      9  * All rights reserved.
     10  *
     11  * Redistribution and use in source and binary forms, with or without
     12  * modification, are permitted provided that the following conditions
     13  * are met:
     14  * 1. Redistributions of source code must retain the above copyright
     15  *    notice, this list of conditions, and the following disclaimer,
     16  *    without modification.
     17  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
     18  *    substantially similar to the "NO WARRANTY" disclaimer below
     19  *    ("Disclaimer") and any redistribution must be conditioned upon
     20  *    including a substantially similar Disclaimer requirement for further
     21  *    binary redistribution.
     22  * 3. Neither the names of the above-listed copyright holders nor the names
     23  *    of any contributors may be used to endorse or promote products derived
     24  *    from this software without specific prior written permission.
     25  *
     26  * Alternatively, this software may be distributed under the terms of the
     27  * GNU General Public License ("GPL") version 2 as published by the Free
     28  * Software Foundation.
     29  *
     30  * NO WARRANTY
     31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
     34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     35  * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
     36  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
     37  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
     38  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
     39  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
     40  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
     41  * POSSIBILITY OF SUCH DAMAGES.
     42  */
     43 
     44 #include "acpihelp.h"
     45 
     46 
     47 /* Local prototypes */
     48 
     49 static void
     50 AhDisplayUsage (
     51     void);
     52 
     53 
     54 /******************************************************************************
     55  *
     56  * FUNCTION:    AhDisplayUsage
     57  *
     58  * DESCRIPTION: Usage message
     59  *
     60  ******************************************************************************/
     61 
     62 static void
     63 AhDisplayUsage (
     64     void)
     65 {
     66 
     67     printf ("\n");
     68     printf ("Usage: acpihelp <options> [NamePrefix | HexValue]\n\n");
     69     printf ("Where: -k [NamePrefix]     Find/Display ASL non-operator keyword(s)\n");
     70     printf ("       -m [NamePrefix]     Find/Display AML opcode name(s)\n");
     71     printf ("       -o [HexValue]       Decode hex AML opcode\n");
     72     printf ("       -p [NamePrefix]     Find/Display ASL predefined method name(s)\n");
     73     printf ("       -s [NamePrefix]     Find/Display ASL operator name(s)\n");
     74     printf ("\nNamePrefix/HexValue not specified means \"Display All\"\n");
     75     printf ("\nDefault search with NamePrefix and no options:\n");
     76     printf ("    Find ASL operator names - if NamePrefix does not start with underscore\n");
     77     printf ("    Find ASL predefined method names - if NamePrefix starts with underscore\n");
     78     printf ("\n");
     79 }
     80 
     81 
     82 /******************************************************************************
     83  *
     84  * FUNCTION:    main
     85  *
     86  * DESCRIPTION: C main function for AcpiHelp utility.
     87  *
     88  ******************************************************************************/
     89 
     90 int ACPI_SYSTEM_XFACE
     91 main (
     92     int                     argc,
     93     char                    *argv[])
     94 {
     95     char                    *Name;
     96     UINT32                  DecodeType;
     97     int                     j;
     98 
     99 
    100     printf (ACPI_COMMON_SIGNON ("ACPI Help Utility"));
    101     DecodeType = AH_DECODE_DEFAULT;
    102 
    103     if (argc < 2)
    104     {
    105         AhDisplayUsage ();
    106         return (0);
    107     }
    108 
    109     /* Command line options */
    110 
    111     while ((j = AcpiGetopt (argc, argv, "hkmops")) != EOF) switch (j)
    112     {
    113     case 'k':
    114         DecodeType = AH_DECODE_ASL_KEYWORD;
    115         break;
    116 
    117     case 'm':
    118         DecodeType = AH_DECODE_AML;
    119         break;
    120 
    121     case 'o':
    122         DecodeType = AH_DECODE_AML_OPCODE;
    123         break;
    124 
    125     case 'p':
    126         DecodeType = AH_DECODE_PREDEFINED_NAME;
    127         break;
    128 
    129     case 's':
    130         DecodeType = AH_DECODE_ASL;
    131         break;
    132 
    133     case 'h':
    134     default:
    135         AhDisplayUsage ();
    136         return (-1);
    137     }
    138 
    139     /* Missing (null) name means "display all" */
    140 
    141     Name = argv[AcpiGbl_Optind];
    142 
    143     switch (DecodeType)
    144     {
    145     case AH_DECODE_AML:
    146         AhFindAmlOpcode (Name);
    147         break;
    148 
    149     case AH_DECODE_AML_OPCODE:
    150         AhDecodeAmlOpcode (Name);
    151         break;
    152 
    153     case AH_DECODE_PREDEFINED_NAME:
    154         AhFindPredefinedNames (Name);
    155         break;
    156 
    157     case AH_DECODE_ASL:
    158         AhFindAslOperators (Name);
    159         break;
    160 
    161     case AH_DECODE_ASL_KEYWORD:
    162         AhFindAslKeywords (Name);
    163         break;
    164 
    165     default:
    166         if (!Name)
    167         {
    168             AhFindAslOperators (Name);
    169             break;
    170         }
    171 
    172         if (*Name == '_')
    173         {
    174             AhFindPredefinedNames (Name);
    175         }
    176         else
    177         {
    178             AhFindAslOperators (Name);
    179         }
    180         break;
    181     }
    182 
    183     return (0);
    184 }
    185 
    186 
    187 /*******************************************************************************
    188  *
    189  * FUNCTION:    AhStrupr (strupr)
    190  *
    191  * PARAMETERS:  SrcString           - The source string to convert
    192  *
    193  * RETURN:      None
    194  *
    195  * DESCRIPTION: Convert string to uppercase
    196  *
    197  * NOTE: This is not a POSIX function, so it appears here, not in utclib.c
    198  *
    199  ******************************************************************************/
    200 
    201 void
    202 AhStrupr (
    203     char                    *SrcString)
    204 {
    205     char                    *String;
    206 
    207 
    208     if (!SrcString)
    209     {
    210         return;
    211     }
    212 
    213     /* Walk entire string, uppercasing the letters */
    214 
    215     for (String = SrcString; *String; String++)
    216     {
    217         *String = (char) toupper ((int) *String);
    218     }
    219 
    220     return;
    221 }
    222