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 13:55 | Nová verze

    Byla vydána nová verze 9.2 textového editoru Vim (Vi IMproved). Přináší vylepšené doplňování, podporu schránky ve Waylandu, podporu XDG Base Directory (konfigurace v $HOME/.config/vim), vylepšené Vim9 skriptování nebo lepší zvýrazňování změn. Vim zůstává charityware. Nadále vybízí k podpoře děti v Ugandě. Z důvodu úmrtí autora Vimu Brama Moolenaara a ukončení činnosti jím založené charitativní organizace ICCF Holland projekt Vim navázal spolupráci s charitativní organizaci Kuwasha.

    Ladislav Hagara | Komentářů: 1
    včera 12:33 | Zajímavý projekt

    Byl představen editor MonoSketch, webová aplikace pro tvorbu diagramů, technických nákresů, flowchartů a různých dalších vizualizací, to vše jenom z ASCII znaků. Všechny operace běží pouze v prohlížeči uživatele a neprobíhá tedy žádné nahrávání dat na server. Zdrojový kód aplikace (drtivá většina Kotlin, žádné C#) je dostupný na GitHubu pod licencí Apache 2.0.

    NUKE GAZA! 🎆 | Komentářů: 1
    včera 12:22 | Nová verze

    Byla vydána nová verze 3.7.0 multiplatformního svobodného frameworku pro zpracování obrazu G'MIC (GREYC's Magic for Image Computing, Wikipedie). Přehled novinek i s náhledy nových filtrů na PIXLS.US.

    Ladislav Hagara | Komentářů: 0
    včera 05:00 | Komunita

    Všem na AbcLinuxu vše nejlepší k Valentýnu aneb Dni lásky ke svobodnému softwaru (I love Free Software Day, Mastodon, 𝕏).

    Ladislav Hagara | Komentářů: 9
    13.2. 19:44 | Zajímavý projekt

    Eric Migicovsky představil Pebble Emulator, tj. emulátor hodinek Pebble (PebbleOS) běžící ve webovém prohlížeči. Za 6 hodin jej napsal Claude Code. Zdrojové kódy jsou k dispozici na GitHubu.

    Ladislav Hagara | Komentářů: 0
    13.2. 17:44 | Nová verze

    Byla vydána nová verze 3.41 frameworku Flutter (Wikipedie) pro vývoj mobilních, webových i desktopových aplikací a nová verze 3.11 souvisejícího programovacího jazyka Dart (Wikipedie).

    Ladislav Hagara | Komentářů: 0
    13.2. 12:11 | IT novinky

    Rusko zcela zablokovalo komunikační platformu WhatsApp, řekl včera mluvčí Kremlu Dmitrij Peskov. Aplikace, jejímž vlastníkem je americká společnost Meta Platforms a která má v Rusku na 100 milionů uživatelů, podle Peskova nedodržovala ruské zákony. Mluvčí zároveň lidem v Rusku doporučil, aby začali používat domácí aplikaci MAX. Kritici tvrdí, že tato aplikace ruské vládě umožňuje lidi sledovat, což úřady popírají.

    Ladislav Hagara | Komentářů: 18
    13.2. 11:44 | IT novinky

    Před 34 lety, ve čtvrtek 13. února 1992, se tehdejší Česká a Slovenská Federativní Republika oficiálně (a slavnostně) připojila k Internetu.

    Ladislav Hagara | Komentářů: 2
    13.2. 04:44 | Humor

    Agent umělé inteligence vytvořil 'útočný' článek o Scottu Shambaughovi, dobrovolném správci knihovny matplotlib, poté, co vývojář odmítl agentem navrženou změnu kódu (pull request). 'Uražený' agent autonomně sepsal a publikoval na svém blogu článek, který přisuzuje Shambaughovi smyšlené motivace, egoismus a strach z AI coby konkurence.

    NUKE GAZA! 🎆 | Komentářů: 34
    12.2. 20:11 | Nová verze

    Bylo vydáno Ubuntu 24.04.4 LTS, tj. čtvrté opravné vydání Ubuntu 24.04 LTS s kódovým názvem Noble Numbat. Přehled novinek a oprav na Discourse.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (19%)
     (6%)
     (0%)
     (11%)
     (27%)
     (3%)
     (4%)
     (1%)
     (12%)
     (27%)
    Celkem 871 hlasů
     Komentářů: 25, poslední 3.2. 19:50
    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: 270×
    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.