Vývojáři dekompilátoru rev.ng otevřeli jeho backend revng-c. Zdrojové kódy jsou k dispozici na GitHubu.
Poněvadž Redis už není svobodný, konsorcium Linux Foundation a Amazon Web Services (AWS), Google Cloud, Oracle, Ericsson a Snap Inc. společně představili svobodný fork Redisu s názvem Valkey.
Sam Bankman-Fried, zakladatel zkrachovalé kryptoměnové burzy FTX, byl dnes odsouzen k 25 letům vězení [Yahoo Finance].
Proxmox oznámil, že usnadňuje migraci z VMware ESXi do Proxmoxu.
Byla vydána nová verze 2.53.18.2 svobodného multiplatformního balíku internetových aplikací SeaMonkey (Wikipedie). Přehled novinek v poznámkách k vydání.
Na blogu programovacího jazyka Swift byl publikován příspěvek Psaní aplikací pro GNOME v programovacím jazyce Swift. Používá se Adwaita pro Swift.
egui je GUI knihovna pro programovací jazyk Rust běžící na webu i nativně. Vydána byla verze 0.27.0.
Byla vydána nová verze 6.1 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl povýšen na verzi 13.0.13. Thunderbird na verzi 115.9.0.
Linka STOPonline.cz v roce 2023 přijala 3700 hlášení závadného obsahu na internetu, 22 bylo předáno PČR, 23 bylo předáno ISP a 944 závadových domén zobrazujících dětskou nahotu či pornografii bylo nahráno do mezinárodního systému ICCAM, který je spravován asociací INHOPE.
Byla publikována podrobná analýza v upstreamu již opravené bezpečnostní chyby CVE-2024-1086 v Linuxu v nf_tables.
int nanosleep(const struct timespec *req, struct timespec *rem) struct timespec { time_t tv_sec; /* sekundy */ long tv_nsec; /* nanosekundy */ };Funkce nanosleep() při úspěšném proběhnutí vrací 0. Pokud se vyskytne chyba, funkce vrátí -1, proměnnou errno nastaví na jednu z možných symbolických konstant a v určitých případech zapíše zbývající čas do ukazatele rem, pokud není nastaven na NULL.
sleep(5); /* pauza 5 sekund */
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <time.h> #include <errno.h> #include <limits.h> enum { MAXNUM = 100, MAXLINE = 25, DELAY = 500000000 }; typedef struct numbers { long array[MAXNUM]; int num; } NUMBERS; int readline(char *a); int estrtol(char *line, long *n); int cmp(const void *p1, const void *p2); void nanoprint(NUMBERS n); int main() { NUMBERS n = {{0}, 0}; char line[MAXLINE]; int i = 0; printf("Zadejte cela cisla:\n"); while (readline(line)) { if (estrtol(line, &n.array[i])) { n.num++; i++; } } printf("\n"); qsort(n.array, n.num, sizeof(n.array[0]), cmp); nanoprint(n); return 0; } int readline(char *line) { int len; if (fgets(line, MAXLINE, stdin) != NULL) { len = strlen(line); if (len + 1 == MAXLINE && line[len-1] != '\n') while (getchar() != '\n') ; if (line[len-1] == '\n') line[len-1] = '\0'; return 1; } else return 0; } int estrtol(char *line, long *n) { char *endptr; errno = 0; *n = strtol(line, &endptr, 10); if (*endptr != '\0') { printf("error: not a number\n"); return 0; } else if (errno == ERANGE && *n == LONG_MAX) { printf("error: overflow\n"); return 0; } else if (errno == ERANGE && *n == LONG_MIN) { printf("error: underflow\n"); return 0; } else if (endptr == line) { printf("error: empty input\n"); return 0; } else return 1; } int cmp(const void *p1, const void *p2) { long a, b, c; a = *(long *) p1; b = *(long *) p2; c = a < b ? -1 : a == b ? 0 : 1; return c; } void nanoprint(NUMBERS n) { struct timespec ts = {0, DELAY}; int i; for(i = 0; i < n.num; i++) { printf("%ld\n", n.array[i]); nanosleep(&ts, NULL); } }
Tiskni Sdílej:
long int strtol(const char *str, char **endptr, int base)Proč vlastně?
const
nedat, aspoň se vyhnete zbytečnému přetypovávání v případě, že potřebujete předat string, který už const
je.
errno
na nulu. V opačném případě je jakýkoliv další pokus o zjištění selhání (přetečení) naprosto zbytečná záležitost. U příbuzných unsigned variant (strtoul
) bych zmínil, že klidně přijmou záporné číslo a "zkonvertují" ho na kladné (podle pravidla převodu signed na unsigned). Proto je dobré před voláním funkce zkontrolovat první nebílý znak, jestli není mínus.
man 3 strtol
).
int usleep(useconds_t usec)
z unistd.h?
NUMBERS n = {{0}, 0};ale
numbers_t numbers; // bzero(&numbers, sizeof(numbers_t)); /* keď nenastavuješ všetky prvy v štrukture pri inicializacií v programe */ numbers.array={0}; numbers.num=0;A parametre funkcie nedefinuj ako typ void, ale ako long *. Nakoľko môžeš pri preklade dať skontrolovať typovú kontrolu. Čo pri void sa stratí.
int cmp(const void *p1, const void *p2)
.