The manual page states that if no upper range limit has been specified, no higher atoms will be printed. This is not true for
$ xlsatoms -range 0- This prints the first 100 atoms, even though it already encountered an invalid one at 0. The reason is that say_batch works as a batch, i.e. retrieves 100 atoms at a time. If one of them is invalid, the rest is still printed. With this adjustment, xlsatoms behaves as stated in manual page. Signed-off-by: Tobias Stoeckmann <tob...@stoeckmann.org> --- xlsatoms.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/xlsatoms.c b/xlsatoms.c index 2bb5b47..5bed0cc 100644 --- a/xlsatoms.c +++ b/xlsatoms.c @@ -248,13 +248,15 @@ say_batch(xcb_connection_t *c, const char *format, xcb_get_atom_name_cookie_t *c xcb_get_atom_name_reply_t *r; r = xcb_get_atom_name_reply(c, cookie[i], &e); if (r) { - /* We could just use %.*s in 'format', but we want to be compatible - with legacy command line usage */ - snprintf(atom_name, sizeof(atom_name), "%.*s", - r->name_len, xcb_get_atom_name_name(r)); - - printf (format, i + low, atom_name); - putchar ('\n'); + if (!done) { + /* We could just use %.*s in 'format', but we want to be compatible + with legacy command line usage */ + snprintf(atom_name, sizeof(atom_name), "%.*s", + r->name_len, xcb_get_atom_name_name(r)); + + printf (format, i + low, atom_name); + putchar ('\n'); + } free(r); } if (e) { -- 2.18.0 _______________________________________________ xorg-devel@lists.x.org: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: https://lists.x.org/mailman/listinfo/xorg-devel