LINUX.ORG.RU
ФорумTalks

В ядро Linux добавят системный вызов leftpad()

 leftpad, ,


0

1

Соответствующий патч прислал Ричард Вайнбергер. Он надеется, что еализация leftpad() в ядре позволит таким платформам, как node.js, предоставлять его в виде стандартной функции и значительно ускорит работу таких сервисов, как http://left-pad.io . Если системный вызов обретёт популярность, можно будет добавить многофункциональный вызов npm(), который, подобно ioctl(), вберёт в себя разные популярные функции, как то is_int, is_array и т.п.

https://lkml.org/lkml/2016/3/31/1108

★★★★★

джва года ждал!

irton ★★★★★
()

Я надеюсь, первоапрельская шутка? Ну в самом деле - нахрена этому быть в ядре, а не в стандартной библиотеке?

alex4321
()
Ответ на: комментарий от crutch_master

Что это такое, зачем оно и зачем ему системный вызов?

REST-совместимый сервис для дополнения строки до нужной длины добивкой выбранным знаком слева. С системным вызовом он, скорее всего, будет отвечать быстрее, так как понадобится меньше переключений контекста.

proud_anon ★★★★★
() автор топика
Последнее исправление: proud_anon (всего исправлений: 1)

Осталось добавить системный вызов main, и все программы обретут скорость, щасте и покой.

one_more_hokum ★★★
()
Ответ на: комментарий от crutch_master

Архиважная фича, не знаю как без неё жить.

Лорчую.

dormeur86 ★★★★
()

С 1-м апреля, ага. А я тут допилил пару реализаций утилитой.

// v0.7 by Saahriktu
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
        long int a2, al;
        char *buf;
        if (argc < 4) {
                printf("usage: leftpad string width char\n");
                return 1;
        }
        a2 = atol(argv[2]);
        al = a2 - strlen(argv[1]);
        if (al < 1) {
                printf("%s\n", argv[1]);
                return 0;
        }
        buf = (char *)malloc(a2 + 1);
        if (buf == NULL)
                return 1;
        memset(buf, argv[3][0], al);
        buf[al] = '\0';
        printf("%s\n", strcat(buf, argv[1]));
        free(buf);
        return 0;
}
#!/usr/bin/python3

import sys

if len(sys.argv) < 4:
    print("usage: leftpad.py string width char\n")
    sys.exit()

print(sys.argv[1].rjust(int(sys.argv[2]), sys.argv[3][0]))

saahriktu ★★★★★
()
Последнее исправление: saahriktu (всего исправлений: 1)
Ответ на: комментарий от alex4321

Это шутка, ты разве не слышал о драме с исчезновением пакета из NPM?

Deleted
()
Ответ на: комментарий от theNamelessOne

Программист на ноде?

Никогда не видел кода на node.js

Твоя аватарка очень в тему.

Я знаю:) Она всегда в тему.

crutch_master ★★★★★
()
Ответ на: комментарий от OldWiseCat

Ну, надо, например, выплюнуть красивый json/yml. Или отформатировать код.

crutch_master ★★★★★
()
Ответ на: комментарий от OldWiseCat

Например, красивый вывод в консоль. В любом случае исчезновение пакета leftpad вызвало немало проблем.

One of those was left-pad. This impacted many thousands of projects. Shortly after 2:30 PM (Pacific Time) on Tuesday, March 22, we began observing hundreds of failures per minute, as dependent projects — and their dependents, and their dependents… — all failed when requesting the now-unpublished package.

http://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm

Deleted
()
Ответ на: комментарий от Harald

Не хватает заголовочного файла для strlen_user(), а ещё есть баг с переполнением.

i-rinat ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.