Linux Audio

Check our new training course

Loading...
Note: File does not exist in v3.15.
 1// SPDX-License-Identifier: GPL-2.0
 2#include <asm/ebcdic.h>
 3#include <asm/ipl.h>
 4
 5/* VM IPL PARM routines */
 6size_t ipl_block_get_ascii_vmparm(char *dest, size_t size,
 7				  const struct ipl_parameter_block *ipb)
 8{
 9	int i;
10	size_t len;
11	char has_lowercase = 0;
12
13	len = 0;
14	if ((ipb->ccw.vm_flags & IPL_PB0_CCW_VM_FLAG_VP) &&
15	    (ipb->ccw.vm_parm_len > 0)) {
16
17		len = min_t(size_t, size - 1, ipb->ccw.vm_parm_len);
18		memcpy(dest, ipb->ccw.vm_parm, len);
19		/* If at least one character is lowercase, we assume mixed
20		 * case; otherwise we convert everything to lowercase.
21		 */
22		for (i = 0; i < len; i++)
23			if ((dest[i] > 0x80 && dest[i] < 0x8a) || /* a-i */
24			    (dest[i] > 0x90 && dest[i] < 0x9a) || /* j-r */
25			    (dest[i] > 0xa1 && dest[i] < 0xaa)) { /* s-z */
26				has_lowercase = 1;
27				break;
28			}
29		if (!has_lowercase)
30			EBC_TOLOWER(dest, len);
31		EBCASC(dest, len);
32	}
33	dest[len] = 0;
34
35	return len;
36}