Byla vydána verze 1.98.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Byla vydána nová verze 7.1 (YouTube) svobodného open source redakčního systému WordPress. Kódové jméno Mary Lou bylo vybráno na počest americké jazzové klavíristky Mary Lou Williams (YouTube).
Bun (Wikipedie), tj. běhové prostředí (runtime) a toolkit pro JavaScript a TypeScript, alternativa k Node.js a Deno, byl vydán ve verzi 1.4. Představení novinek také na YouTube. Bun byl přepsán z programovacího jazyka Zig do Rustu. Pomocí Claude Fable 5.
Vývojáři KDE na Mastodonu oznámili vydání balíku aplikací KDE Gear 26.08. Přehled novinek i s náhledy a videi v oficiálním oznámení.
Společnost PINE64 kvůli nedostatku a vysokým cenám DRAM a eMMC dočasně pozastavuje výrobu linuxových zařízení. Výroba zařízení jako PineTime, PineVoice a Pinecil pokračuje.
Společnost Stripe se dohodla na akvizici společnosti OpenRouter. Za 7,5 miliardy dolarů.
Byla vydána nová verze 1.27 programovacího jazyka Go (Wikipedie). Přehled novinek v poznámkách k vydání.
V pátek 28. srpna se v Praze uskuteční již osmý Mobile Linux Hackday. Jako obvykle se potkáme v pražské pobočce SUSE v Karlíně na Křižíkově, takže kromě mobilního Linuxu je to tentokrát i příležitost přijít se podívat na nově zrekonstruované kanceláře. Začínáme v 10:00, ale dorazit můžete samozřejmě kdykoliv v průběhu dne. Setkáním vás provede Petr Hodina, vývojář GPU ovladačů v Mesa 3D a jeden z hlavních lidí české komunity kolem mobilního … více »
Představen byl Raspberry Pi Compute Module 5 Programming Jig. Jedná se o zařízení umožňující připravit Compute Module 5 do plně funkčního stavu bez nutnosti použití dalších vstupně / výstupních desek. Podporuje automatizaci pomocí nástroje rpi-sb-provisioner. Podrobnosti v dokumentaci.
Hackeři ve Francii ukradli data více než půl milionu daňových poplatníků. Je to jeden z největších hackerských útoků v dějinách země. O útoku z konce června informovala až teď daňová správa. Teprve od pondělí dotčeným občanům zasílá e-maily s instrukcemi, jak postupovat dál. Hackeři se sice nedostanou k penězům dotyčných, hrozí ale věrohodné podvody. Hackeři získali třeba celá jména, údaje o rodinných příslušnících nebo také údaje o
… více »Nuže, zkus třeba takovýto snipplet:
#include<stdio.h>
int main( int argc, char **argv, char **env ) {
for ( ; *env; ++env ) puts( *env );
}
Nebo třeba takhle, což je (?) totéž... (Kdyžtak to tu někdo upřesní...)
#include<stdio.h>
extern char **environ;
int main( void ) {
for ( ; *environ; ++environ ) puts( *environ );
}
To byly jen houpé příklady pro přehled. Pro lepší manipulaci je dobré udělat #include<stdlib.h> a využít jednu z následujících funkcí.
int putenv(char *string); (man 3 putenv) přijímá string tvaru NÁZEV=HODNOTA a nastaví ho. String nekopíruje, pouze přidá pointer. Musí jít o trvale existuící string, nikoliv jen o dočasné pole na zásobníku. Existující proměnné přepíše.
int setenv(const char *name, const char *value, int overwrite); (man 3 setenv) dělá totéž, jen vybranějším způsobem. Parametr overwrite určuje, zda má v případě konfliktu názvů původní proměnnou přepsat. Tím se liší od předchozí funkce, která přepisuje vždy. Další rozdíl je, že string okopíruje. Není tedy nutné, aby za běhu existoval trvale. V případě, že je příliš dlouhý, vrátí hodnotu -1.
int unsetenv(const char *name); (man 3 unsetenv) Tady je to jasné.
Příčina případné chyby bude v ERRNO.
char *getenv(const char *name); (man 3 getenv) Vyhledá název. Vrátí buď pointer na hodnotu nebo NULL, podle toho, zda taková proměnná existuje.
Změna je lokální v současném procesu. Nepřenáší se zpět do jeho otce.
Změněné proměnné se předávají nově vzniklým synovským procesům.
Změna se nepřenáší do již běžících synovských procesů.
Takhle bys to mohl třeba použít, stačí přidat jen ošetření případných chybových stavů.
#include<stdio.h>
#include<stdio.h>
static const char *const NOTSET = "VARIABLE NOT SET";
static const char *const USER = "USER";
static void output( char *const value ) {
puts( value == NULL ? NOTSET : value );
}
int main( void ) {
output( getenv( USER ) ); /* skutečný uživatel */
putenv( "USER=vincenc" );
output( getenv( USER ) ); /* 'vincenc' - přepsáno */
setenv( USER, "hugo", 0 );
output( getenv( USER ) ); /* 'vincenc' - nepřepsáno */
setenv( USER, "hugo", 1 );
output( getenv( USER ) ); /* 'hugo' - přepsáno */
unsetenv( USER );
output( getenv( USER ) ); /* 'VARIABLE NOT SET' - smazáno */
}
Uf, to je vše. Ale příště zkus radši napřed Google, protože tohle není příliš složitá otázka... 
K tomu poslednímu snippletu: mám tam omylem dvakrát stejný include. Jak jsem zjistil, stdlib.h v tomto případě není nutné includovat - stačí stdio.h.
Tiskni
Sdílej: