Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/drivers/acpi/acpica/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 4 kB image not shown  

Quellverzeichnis  utnonansi.c   Sprache: C

 
// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
/*******************************************************************************
 *
 * Module Name: utnonansi - Non-ansi C library functions
 *
 ******************************************************************************/


#include <acpi/acpi.h>
#include "accommon.h"

#define _COMPONENT          ACPI_UTILITIES
ACPI_MODULE_NAME("utnonansi")

/*
 * Non-ANSI C library functions - strlwr, strupr, stricmp, and "safe"
 * string functions.
 */

/*******************************************************************************
 *
 * FUNCTION:    acpi_ut_strlwr (strlwr)
 *
 * PARAMETERS:  src_string      - The source string to convert
 *
 * RETURN:      None
 *
 * DESCRIPTION: Convert a string to lowercase
 *
 ******************************************************************************/

void acpi_ut_strlwr(char *src_string)
{
 char *string;

 ACPI_FUNCTION_ENTRY();

 if (!src_string) {
  return;
 }

 /* Walk entire string, lowercasing the letters */

 for (string = src_string; *string; string++) {
  *string = (char)tolower((int)*string);
 }
}

/*******************************************************************************
 *
 * FUNCTION:    acpi_ut_strupr (strupr)
 *
 * PARAMETERS:  src_string      - The source string to convert
 *
 * RETURN:      None
 *
 * DESCRIPTION: Convert a string to uppercase
 *
 ******************************************************************************/


void acpi_ut_strupr(char *src_string)
{
 char *string;

 ACPI_FUNCTION_ENTRY();

 if (!src_string) {
  return;
 }

 /* Walk entire string, uppercasing the letters */

 for (string = src_string; *string; string++) {
  *string = (char)toupper((int)*string);
 }
}

/******************************************************************************
 *
 * FUNCTION:    acpi_ut_stricmp (stricmp)
 *
 * PARAMETERS:  string1             - first string to compare
 *              string2             - second string to compare
 *
 * RETURN:      int that signifies string relationship. Zero means strings
 *              are equal.
 *
 * DESCRIPTION: Case-insensitive string compare. Implementation of the
 *              non-ANSI stricmp function.
 *
 ******************************************************************************/


int acpi_ut_stricmp(char *string1, char *string2)
{
 int c1;
 int c2;

 do {
  c1 = tolower((int)*string1);
  c2 = tolower((int)*string2);

  string1++;
  string2++;
 }
 while ((c1 == c2) && (c1));

 return (c1 - c2);
}

#if defined (ACPI_DEBUGGER) || defined (ACPI_APPLICATION) || defined (ACPI_DEBUG_OUTPUT)
/*******************************************************************************
 *
 * FUNCTION:    acpi_ut_safe_strcpy, acpi_ut_safe_strcat, acpi_ut_safe_strncat
 *
 * PARAMETERS:  Adds a "DestSize" parameter to each of the standard string
 *              functions. This is the size of the Destination buffer.
 *
 * RETURN:      TRUE if the operation would overflow the destination buffer.
 *
 * DESCRIPTION: Safe versions of standard Clib string functions. Ensure that
 *              the result of the operation will not overflow the output string
 *              buffer.
 *
 * NOTE:        These functions are typically only helpful for processing
 *              user input and command lines. For most ACPICA code, the
 *              required buffer length is precisely calculated before buffer
 *              allocation, so the use of these functions is unnecessary.
 *
 ******************************************************************************/


u8 acpi_ut_safe_strcpy(char *dest, acpi_size dest_size, char *source)
{

 if (strlen(source) >= dest_size) {
  return (TRUE);
 }

 strcpy(dest, source);
 return (FALSE);
}

u8 acpi_ut_safe_strcat(char *dest, acpi_size dest_size, char *source)
{

 if ((strlen(dest) + strlen(source)) >= dest_size) {
  return (TRUE);
 }

 strcat(dest, source);
 return (FALSE);
}

u8
acpi_ut_safe_strncat(char *dest,
       acpi_size dest_size,
       char *source, acpi_size max_transfer_length)
{
 acpi_size actual_transfer_length;

 actual_transfer_length = ACPI_MIN(max_transfer_length, strlen(source));

 if ((strlen(dest) + actual_transfer_length) >= dest_size) {
  return (TRUE);
 }

 strncat(dest, source, max_transfer_length);
 return (FALSE);
}

void acpi_ut_safe_strncpy(char *dest, char *source, acpi_size dest_size)
{
 /* Always terminate destination string */

 strncpy(dest, source, dest_size);
 dest[dest_size - 1] = 0;
}

#endif

Messung V0.5
C=95 H=87 G=90

¤ Dauer der Verarbeitung: 0.3 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.