Byla vydána verze 11.0.0 knihovny libvirt (Wikipedie) zastřešující různé virtualizační technologie a vytvářející jednotné rozhraní pro správu virtuálních strojů. Současně byl ve verzi 11.0.0 vydán související modul pro Python libvirt-python. Přehled novinek v poznámkách k vydání.
Byla vydána nová verze 3.4.0 nástroje pro inkrementální kopírování souborů rsync (Wikipedie). Přehled oprav a vylepšení v souboru NEWS. Řešeno je 6 zranitelností.
V srpnu loňského roku byla vyhlášena RP2350 Hacking Challenge aneb oficiální výzva Raspberry Pi na prolomení bezpečnosti mikrokontroléru RP2350. Povedlo se. Včera byli představeni čtyři vítězové a jejich techniky.
Na čem aktuálně pracují vývojáři open source operačního systému Haiku (Wikipedie)? Byl publikován přehled vývoje za prosinec 2024. Vypíchnuto je začlenění webového prohlížeče Iceweasel, tj. alternativního sestavení Firefoxu.
Tetris a DOOM běžící v pdf. Proč a jak v příspěvku na blogu.
Společnost Oracle představila sadu nástrojů a skriptů pro sběr a analýzu dat o stavu linuxových systémů a jejich ladění pod společným názvem Oracle Linux Enhanced Diagnostics (OLED). K dispozici pod licencí GPLv2.
OpenZFS (Wikipedie), tj. implementace souborového systému ZFS pro Linux a FreeBSD, byl vydán ve verzi 2.3.0. Přináší RAIDZ Expansion, Fast Dedup, Direct IO, JSON a Long names.
Společnost PINE64 stojící za telefony PinePhone nebo notebooky Pinebook publikovala na svém blogu lednový souhrn novinek.
Baví vás bastlení, fyzika, IT a nebo prostě cokoliv technického? Proseděli jste celé Vánoce v záři obrazovky počítače a nebo jste o tom alespoň snili? Chcete se pochlubit technickými vánočními dárky? Pak doražte na Virtuální Bastlírnu - online pokec (nejen) techniků a bastlířů!
… více »Desktopové prostředí Enlightenment bylo vydáno ve verzi 0.27.0, provázejí ho knihovny EFL 1.28. Jde o převážně opravné vydání opět po roce.
char *end; //pouzito pro kontrolu konverze unsigned int pocet_zidli= strtoul(argv[1], &end, 0); if (*end != '\0') {//osetreni vstupu argv[1] fprintf(stderr, "%s\n", chybove_zpravy[CHYBA_ARGV1]); return -1; }zkoušel jsem to takhle. strtoul ale převádí string na unsigned long a já to uložím do unsigned int, je to problém? A pak ještě mi to hází když zadám např -1, nějaké hodně velké číslo, jak to prosím ošetřím děkuji.
char *end; int pocet_zidli= strtoul(argv[1], &end, 0); if (errno == ERANGE || *end != '\0' || pocet_zidli < 0) {//osetreni vstupu argv[1] fprintf(stderr, "%s\n", chybove_zpravy[CHYBA_ARGV]); return -1; }btw nejsou nekde man. stranky v CZ, angličtinu neovladam a resim skolni projekt s procesy a vubec nevim kde hledat info :/ jak zacit. Pritom pri prihlasovani na Bc. nikde nebylo psano, ze vsechno bude v AJ, kdyz se anglictina vyucuje az na Bc. To uz je jina kapitola..
strtoul
převádí na unsigned long
, nikoliv unsigned int
. Pokud to rovnou převedete na unsigned int
, nemáte šanci detekovat přetečení mezi UINT_MAX
a ULONG_MAX
. Takže lépe si takto nadefinujte strtoui
:
int strtoui(const char *str, char **end, int base) { unsigned long l = strtoul(str, end, base); if (l > UINT_MAX) { errno = ERANGE; return UINT_MAX; } return l; }A nezapomeňte na to, že
strtoul
nemaže errno
, pokud nedošlo k chybě, takže si jej před jejím voláním vymažte, tedy volání by mělo vypadat nějak takto:
char *end; errno = 0; unsigned int pocet_zidli = strtoui(argv[1], &end, 0); if (errno == ERANGE || *end != 0) { // Chyba }
man strtoul
:
Negative values are considered valid input and are silently converted to the equivalent unsigned long int value.Takže řešení je použít
strtol
(strtoll
pokud chcete celý rozsah unsigned long
) a ošetřit obě meze.
Tiskni Sdílej: