From mboxrd@z Thu Jan 1 00:00:00 1970 From: Michael Titke Subject: iNotify Man Page: Prefix Header + Tail Array vs C Structure Date: Sun, 13 Dec 2015 13:09:45 +0100 Message-ID: <566D6009.7050409@o2online.de> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Return-path: Sender: linux-man-owner-u79uwXL29TY76Z2rM5mHXA@public.gmane.org To: mtk.manpages-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org Cc: linux-man-u79uwXL29TY76Z2rM5mHXA@public.gmane.org List-Id: linux-man@vger.kernel.org Hello! The current version of the manual page describing /inotify/ (as well as the version installed with Ubuntu 15.04 frozen to Violet Indigo) contains a descriptive C structure describing the /inotify//messages/: struct inotify_event { int wd; /* Watch descriptor */ uint32_t mask; /* Mask describing event */ uint32_t cookie; /* Unique cookie associating related events (for rename(2)) */ uint32_t len; /* Size of name field */ char name[]; /* Optional null-terminated name */ }; As part of the development of VSI I translated the above structure without much thinking into a corresponding byte structure description: (define inotify-event-header (byte-structure-description (wd int) (mask 4) ; [sic! that was an uint32] (cookie 4) (len 4) ;(name pointer) ; That's not a pointer but an array: NAME_MAX + 1 )) Now while the prefix (or header) of the message is described adequately the specification of the tail array as a char name[] would in C be interpreted as a pointer onto a char. One might insert a length parameter like char name[NAME_MAX + 1] or exclude that tail array from the structure and describe the message in terms of /prefix/ or /header/ and /tail array/. struct inotify_event { int wd; /* Watch descriptor */ uint32_t mask; /* Mask describing event */ uint32_t cookie; /* Unique cookie associating related events (for rename(2)) */ uint32_t len; /* Size of name field */ char name[NAME_MAX + 1]; /* Optional null-terminated name */ }; With that length parameter in the structure the size of the messages is described adequately but the actual length of the name might be confused with the maximum size which usually includes some (tail) padding. I'm sorry but I don't know enough about /iNotify/ to craft a patch for this. Is this a datagram channel where half-read messages will vanish? Perhaps I should continue reading the manual page. :-) Regards, Michael -- VSI: https://code.launchpad.net/viper-system-interface (reason: 550 5.7.1 Content-Policy reject msg: The message contains HTML subpart, therefore we consider it SPAM or Outlook Virus. TEXT/PLAIN is accepted.! BF: