amarao: (Default)
[personal profile] amarao
Это корректный код из mdadm. Многослойно-хтонический ужас С. Не программистов, которые это писали, самого языка.

int sysfs_fd_get_two(int fd, unsigned long long *v1, unsigned long long *v2)
{
/* two numbers in this sysfs file, either
* NNN (NNN)
* or
* NNN / NNN
*/
char buf[80];
int n;
char *ep, *ep2;
lseek(fd, 0, 0);
n = read(fd, buf, sizeof(buf));
if (n <= 0 || n == sizeof(buf))
return -2;
buf[n] = 0;
*v1 = strtoull(buf, &ep, 0);
if (ep == buf || (*ep != 0 && *ep != '\n' && *ep != ' '))
return -1;
while (*ep == ' ' || *ep == '/' || *ep == '(')
ep++;
*v2 = strtoull(ep, &ep2, 0);
if (ep2 == ep || (*ep2 != 0 && *ep2 != '\n' && *ep2 != ' ' && *ep2 != ')')) {
*v2 = *v1;
return 1;
}
return 2;
}


Date: 2022-12-20 12:35 am (UTC)
From: [identity profile] edo-rus.livejournal.com

да не только на pdp, я как раз учил си со знанием ассемблера x86, и было понятно откуда ноги растут.

Profile

amarao: (Default)
amarao

February 2026

S M T W T F S
123456 7
8910111213 14
15161718192021
22232425262728

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 26th, 2026 04:40 am
Powered by Dreamwidth Studios