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 12:22 | Zajímavý software

    Edvard Rejthar na blogu zaměstnanců CZ.NIC představil svou aplikaci SlideRshow (GitHub). Funguje jako prohlížeč fotek, ale i jako jejich organizér a prezentátor. Neinstaluje se, běží přímo v prohlížeči. Bez serveru. Offline.

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

    Kermit, tj. protokol pro přenos souborů, vznikl před 45 lety. Při této příležitosti byla po 15 letech od vydání poslední stabilní verze 9.0.302 vydána nová stabilní verze 11 implementace C-Kermit. S podporou IPv6.

    Ladislav Hagara | Komentářů: 0
    dnes 11:11 | Zajímavý článek

    První verze konverzního nástroje Pandoc byla vydána před 20 lety. Jeho autor John MacFarlane při tomto výročí rekapituluje jednotlivé etapy vývoje a přidávání nových funkcí – rozšíření nejen Markdownu a podporu mnoha dalších formátů.

    |🇵🇸 | Komentářů: 0
    dnes 00:55 | Pozvánky

    Srpen přinesl nejen další spalující vedro, ale také Virtuální Bastlírnu s neméně žhavými novinkami. Využijte tedy předpovědi na deštivý čtvrteční večer a od 20:00 se připojte online k tomuto neformálnímu setkání kutilů, techniků a vědců, kde se strahovskými bastlíři proberete nejzajímavější věci, na které jste narazili za poslední měsíc. Pokud jde o novinky, řeč zcela jistě přijde na systém INDX pro tiskárny Průša, který na konci

    … více »
    bkralik | Komentářů: 0
    včera 17:22 | Zajímavý článek

    Firma T-Mobile blokovala „dezinformační web“ AC24 bez toho, aniž by k tomu měla závazný pokyn orgánů veřejné moci. Píše to ve svém rozsudku Městský soud v Praze, který po čtyřech letech uzavřel kauzu blokace zmíněného webu. Operátor musí uhradit škodu ve výši 35 tisíc korun. Advokát společnosti T-Mobile se snažil i u odvolacího senátu argumentovat tím, že firma jednala v dobré víře, když na stránky omezila přístup poté, co ji k tomu vyzvalo

    … více »
    Ladislav Hagara | Komentářů: 16
    včera 16:33 | IT novinky

    Padla obžaloba v bitcoinové kauze. Státní zástupkyně chce pro Blažka 6,5 roku vězení, pro Titze 8 let.

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | IT novinky Ladislav Hagara | Komentářů: 3
    včera 14:22 | Komunita

    Na GitHubu byl publikován seznam 55 kritických bezpečnostních chyb v SQLite s přiřazenými CVE čísly. JFrog Security informuje, že se jedná jenom o AI slop, části kódu na které CVE odkazují, v daných verzích vůbec neexistují. Upozorňuje také, že čísla CVE jsou přiřazována bez ověřování.

    Ladislav Hagara | Komentářů: 4
    včera 04:22 | Zajímavý článek

    Příspěvek na blogu Google Security popisuje, jak tým Chrome Security využívá umělou inteligenci k zásadnímu zrychlení a zlepšení procesu odhalování, třídění a opravování bezpečnostních chyb v prohlížeči Chrome. Díky AI byla nalezena kritická chyba, která byla v kódu přes 13 let. Ve verzích Chrome 149 a 150 bylo opraveno více chyb než v předchozích 23 verzích dohromady.

    Ladislav Hagara | Komentářů: 0
    2.8. 13:11 | IT novinky

    Firmy v EU musí počínaje dnešním dnem označovat obsah vytvořený umělou inteligencí. Znamená to povinnost informovat uživatele, že člověk komunikuje s chatbotem či jiným systémem AI. Rovněž obrázky, audia či videa, které jsou vytvořené nebo zmanipulované pomocí umělé inteligence a které mohou působit jako autentické, musejí být jasně označeny jako uměle vytvořené.

    Ladislav Hagara | Komentářů: 4
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (18%)
     (30%)
     (6%)
     (6%)
     (2%)
     (15%)
     (23%)
    Celkem 2318 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    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: 356×
    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.