abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 14:00 | Nová verze

Komunita kolem Linuxu From Scratch (LFS) vydala Linux Linux From Scratch 8.0 a Linux From Scratch 8.0 se systemd. Nové verze knih s návody na instalaci vlastního linuxového systému ze zdrojových kódů přichází především s Glibc 2.25 a GCC 6.3.0. Současně bylo oznámeno vydání verze 8.0 knih Beyond Linux From Scratch (BLFS) a Beyond Linux From Scratch se systemd.

Ladislav Hagara | Komentářů: 0
dnes 11:11 | Nová verze

Byla vydána verze 0.10.0 webového prohlížeče qutebrowser (Wikipedie). Přehled novinek v příspěvku na blogu. Vývojáři qutebrowseru kladou důraz na ovladatelnost pomocí klávesnice a minimální GUI. Inspirovali se prohlížečem dwb a rozšířeními pro Firefox Vimperator a Pentadactyl. Prohlížeč qutebrowser je naprogramován v Pythonu a využívá PyQt5. Zdrojové kódy jsou k dispozici na GitHubu pod licencí GNU GPL 3.

Ladislav Hagara | Komentářů: 10
včera 16:22 | Nová verze

Po pěti měsících od vydání Waylandu a Westonu 1.12.0 oznámil Bryce Harrington (Samsung) vydání Waylandu 1.13.0 a Westonu 2.0.0.

Ladislav Hagara | Komentářů: 0
24.2. 13:37 | Bezpečnostní upozornění

Společnost Cloudflare (Wikipedie) na svém blogu potvrdila bezpečnostní problém s její službou. V požadovaných odpovědích od reverzní proxy byla odesílána také data z neinicializované paměti. Útočník tak mohl získat cookies, autentizační tokeny, data posílaná přes HTTP POST a další citlivé informace. Jednalo se o chybu v parsování HTML. Zneužitelná byla od 22. září 2016 do 18. února 2017. Seznam webů, kterých se bezpečnostní problém potenciálně týká na GitHubu.

Ladislav Hagara | Komentářů: 1
24.2. 08:22 | Nová verze

Byla vydána první beta verze Ubuntu 17.04 s kódovým názvem Zesty Zapus. Ke stažení jsou obrazy Kubuntu, Lubuntu, Ubuntu Budgie, Ubuntu GNOME, Ubuntu Kylin, Ubuntu Studio a Xubuntu. Dle plánu by Ubuntu 17.04 mělo vyjít 13. dubna 2017.

Ladislav Hagara | Komentářů: 55
23.2. 17:53 | Bezpečnostní upozornění

Google na svém blogu věnovaném počítačové bezpečnost informuje o nalezení "reálného" způsobu generování kolizí hašovací funkce SHA-1. Podrobnosti a zdrojové kódy budou zveřejněny do 90 dnů. Již dnes lze ale na stránce SHAttered nalézt 2 pdf soubory, jejichž obsah se liší a SHA-1 otisk je stejný (infografika).

Ladislav Hagara | Komentářů: 40
23.2. 17:51 | Nová verze

Vyšla nová verzia open source software na správu a automatizáciu cloudových datacentier Danube Cloud 2.4. Danube Cloud je riešenie postavené na SmartOS, ZFS, KVM a zónach. Obsahuje vlastnosti ako integrovaný monitoring, DNS manažment, zálohy, a samozrejme rozsiahlu dokumentáciu.

dano | Komentářů: 12
23.2. 17:46 | Pozvánky

V Plzni se 3. až 5. března 2017 uskuteční AIMTEChackathon. Je to akce pro vývojáře, grafiky, webdesignéry i veřejnost. Akci provází zajímavé přednášky IT odborníků. Více o programu a možnosti přihlášení na stránkách akce.

cuba | Komentářů: 0
23.2. 01:00 | Nová verze

Známý šifrovaný komunikátor Signal od verze 3.30.0 již nevyžaduje Google Play Services. Autoři tak po letech vyslyšeli volání komunity, která dala vzniknout Google-free forku LibreSignal (dnes již neudržovaný). Oficiální binárky jsou stále distribuované pouze přes Google Play, ale lze použít neoficiální F-Droid repozitář fdroid.eutopia.cz s nezávislými buildy Signalu nebo oficiální binárku stáhnout z Google Play i bez Google účtu

… více »
xm | Komentářů: 8
22.2. 23:14 | Nová verze

Po třech týdnech od vydání první RC verze byla vydána první stabilní verze 17.01.0 linuxové distribuce pro routery a vestavěné systémy LEDE (Linux Embedded Development Environment), forku linuxové distribuce OpenWrt. Přehled novinek v poznámkách k vydání. Dotazy v diskusním fóru.

Ladislav Hagara | Komentářů: 8
Jak se stavíte k trendu ztenčování přenosných zařízení (smartphony, notebooky)?
 (13%)
 (2%)
 (72%)
 (3%)
 (10%)
Celkem 718 hlasů
 Komentářů: 66, poslední 22.2. 18:57
    Rozcestník

    Dotaz: inotify nezachycuje IN_MOVED_TO event pri prejmenovani

    tomes.io avatar 4.1.2014 15:25 tomes.io | skóre: 12 | blog: tomesh
    inotify nezachycuje IN_MOVED_TO event pri prejmenovani
    Přečteno: 141×
    Ahoj,

    potrebuji pomoci inotify ziskat jmeno souboru/adresare, ktery byl prejmenovan. Dle manualu se v takove situaci vygeneruji dva eventy, IN_MOVED_FROM a IN_MOVED_TO se stejnym cookie. Muj program nize ale zachyti jen IN_MOVED_FROM. MOVED_TO se vubec nevygeneruje a me by zajimalo, jestli mam nekde chybu, nebo uz tohle inotify nedela?

    Pri rename treba souboru, se po sobe vygeneruje jenom IN_MOVED_FROM a OPEN. Nevim proc ne MOVED_TO...
    
    
    #define EVENT_SIZE  ( sizeof (struct inotify_event) )
    #define BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )
    
    int main(int argc, char **argv)
    {
    	int length, i = 0;
    	int fd;
    	int wd;
    	char buffer[BUF_LEN];
    
    	fd = inotify_init();
    
    	if (fd < 0) {
    		perror("inotify_init");
    	}
    
    	wd = inotify_add_watch(fd, "/home/tomesh/Dropbox/C/sync", IN_ALL_EVENTS);
    
    
    	if (length < 0) {
    		perror("read");
    	}
    
    	while (1) {
    		length = read(fd, buffer, BUF_LEN);
    		struct inotify_event *event = (struct inotify_event *) &buffer[ i ];
    		if (event->len) {
    
    			if (event->mask & IN_CREATE) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was created.\n", event->name);
    				} else {
    					printf("The file %s was created.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_DELETE) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was deleted.\n", event->name);
    				} else {
    					printf("The file %s was deleted.\n", event->name);
    				}
    			}
    			if (event->mask & IN_MODIFY) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was modified.\n", event->name);
    				} else {
    					printf("The file %s was modified.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_MOVED_FROM) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was moved from.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was moved from.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_MOVED_TO) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was moved to.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was moved to.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_MOVE_SELF) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %ds was itself moved.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was itself moved.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_DELETE_SELF) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was itself deleted.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was itself deleted.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_OPEN) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was opened.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was opened.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_ATTRIB) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d attr was changed.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d attr was changed.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_ACCESS) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was accessed.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was accessed.\n", event->name, event->cookie);
    				}
    			}
    
    
    		}
    	}
    	(void) inotify_rm_watch(fd, wd[0]);
    	(void) close(fd);
    
    	exit(0);
    }
    
    

    Řešení dotazu:


    Odpovědi

    4.1.2014 16:35 chrono
    Rozbalit Rozbalit vše Re: inotify nezachycuje IN_MOVED_TO event pri prejmenovani
    Skontroloval by som, či funkcia read nevrátila viac udalostí v jednom volaní.

    PS: Ten kód vyzerá tak, že takú kontrolu tam kedysi pravdepodobne mal (tipujem to podľa tej nevyužitej premennej i).
    4.1.2014 17:25 Bill Gates
    Rozbalit Rozbalit vše Re: inotify nezachycuje IN_MOVED_TO event pri prejmenovani
    i += EVENT_SIZE + event->len;
    tomes.io avatar 4.1.2014 17:55 tomes.io | skóre: 12 | blog: tomesh
    Rozbalit Rozbalit vše Re: inotify nezachycuje IN_MOVED_TO event pri prejmenovani
    Diky vsem, uz to funguje jak ma:
    
    #define EVENT_SIZE  ( sizeof (struct inotify_event) )
    #define BUF_LEN     ( 1024 * ( EVENT_SIZE + 16 ) )
    
    int main(int argc, char **argv)
    {
    	int length, i;
    	int fd;
    	int wd;
    	char buffer[BUF_LEN];
    	struct inotify_event *event;
    
    	fd = inotify_init();
    
    	if (fd < 0)
    		perror("inotify_init");
    
    	wd = inotify_add_watch(fd, "/home/tomesh/Dropbox/C/sync", IN_ALL_EVENTS);
    
    	while (1) {
    		i = 0;
    		length = read(fd, buffer, BUF_LEN);
    
    		if (length < 0)
    			perror("read");
    
    		if (length == 0)
    			sleep(1);
    		
    		while (i < length) {
    			
    			event = (struct inotify_event *) &buffer[i];
    			
    			if (event->mask & IN_CREATE) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was created.\n", event->name);
    				} else {
    					printf("The file %s was created.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_DELETE) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was deleted.\n", event->name);
    				} else {
    					printf("The file %s was deleted.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_MODIFY) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s was modified.\n", event->name);
    				} else {
    					printf("The file %s was modified.\n", event->name);
    				}
    			}
    
    			if (event->mask & IN_MOVED_FROM) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was moved from.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was moved from.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_MOVED_TO) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was moved to.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was moved to.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_MOVE_SELF) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %ds was itself moved.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was itself moved.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_DELETE_SELF) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was itself deleted.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was itself deleted.\n", event->name, event->cookie);
    				}
    			}
    			
    			if (event->mask & IN_ATTRIB) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d attr was changed.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d attr was changed.\n", event->name, event->cookie);
    				}
    			}
    
    			if (event->mask & IN_ACCESS) {
    				if (event->mask & IN_ISDIR) {
    					printf("The directory %s with cookie %d was accessed.\n", event->name, event->cookie);
    				} else {
    					printf("The file %s with cookie %d was accessed.\n", event->name, event->cookie);
    				}
    			}
    
    			i += sizeof(struct inotify_event) +event->len;
    		}
    	}
    	(void) inotify_rm_watch(fd, wd);
    	(void) close(fd);
    
    	exit(0);
    }
    
    

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.