From patchwork Fri Jan 12 14:58:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stefan Herbrechtsmeier X-Patchwork-Id: 859996 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=googlegroups.com (client-ip=2a00:1450:400c:c0c::240; helo=mail-wr0-x240.google.com; envelope-from=swupdate+bncbdn7dbh5yqibbum34pjakgqe4ut2guy@googlegroups.com; receiver=) Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=googlegroups.com header.i=@googlegroups.com header.b="XMvoXjEe"; dkim-atps=neutral Received: from mail-wr0-x240.google.com (mail-wr0-x240.google.com [IPv6:2a00:1450:400c:c0c::240]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 3zJ5Yc3DmKz9sNw for ; Sat, 13 Jan 2018 02:01:40 +1100 (AEDT) Received: by mail-wr0-x240.google.com with SMTP id n13sf3580279wra.13 for ; Fri, 12 Jan 2018 07:01:40 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1515769297; cv=pass; d=google.com; s=arc-20160816; b=amseXNZkOCCGYhON6Of/HZj+W/puQm2JJEl37HJUaRHiFD+NERCo8WGwkac50zdxMg dbrr6+7LJ+ajoD8kmR2/ytwlUdHgxUu/n71QZpoLCByk48C+HoF1IdmCzP1tsMyjs3EB /hK63Was2vreNkM67ey+uOVMZVo692rGgIwkfgnsunUuEElhbV62OtcNqBLdri/MNON6 TuUpOlaYPAmg0EgXrcONa+q0VakF4PKqBIjHjWTvyxGQuSp9o67eOOvORWJc3sxvGpTA wEaFO4+dLF0nnaG6YdPKr4VnTW5srM5bQDihhMRrQsSqOsfS5FyLXx4xda3z0zyqPqwv g3Bg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-unsubscribe:list-subscribe:list-archive:list-help:list-post :list-id:mailing-list:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:arc-authentication-results :arc-message-signature:mime-version:sender:dkim-signature :arc-authentication-results; bh=N0CHUycAUuSZplIIETJI+CtdIsiYZ8SA2ZP6PFSiw8M=; b=VLrPpPa7+Mhsxj4fkZ30YZOs76AhR2bg3c6iF7sGIhwRpuHO4tnnWRc2tUgshjM7Rx yWCVQHmLeDOuRY9XyYtDvkrMIJpbnOskf4rDVsuTJE2oO+t2e5IVBfpGbUw9aLgnF/GK G+BYUANt3ZnIT+H3UUIP3JjUsNpvTYq/7VGB4Qz6q7hfUwfqQavCfHXfwH7tMsbdB8iC VVxV8S/XVinCzvuQMlR0rTv0k803b2tdEb0guxLL/wlqZMhq7qtuIE8LQXpSgdfhjX5C pKDylYH+G+IF+Mkbl6JGYFCEd414SnrKWxXbVT05CBJZOQifq/1zq5SSO/USDPu7nD7y 6lRQ== ARC-Authentication-Results: i=2; gmr-mx.google.com; spf=neutral (google.com: 85.13.157.12 is neither permitted nor denied by best guess record for domain of stefan@herbrechtsmeier.net) smtp.mailfrom=stefan@herbrechtsmeier.net DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlegroups.com; s=20161025; h=sender:mime-version:from:to:cc:subject:date:message-id:in-reply-to :references:x-original-sender:x-original-authentication-results :precedence:mailing-list:list-id:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=N0CHUycAUuSZplIIETJI+CtdIsiYZ8SA2ZP6PFSiw8M=; b=XMvoXjEeYUwGk+VMPORiON0HGUWIeSuzj6wtsmaggwAYPB32uVH1m23Yil0ACM8OB3 qqm8AabILXxElB1zHslojR75RtjmHkc+HNRG0Hn7gwAIAgKZ894Bv1RRtT2BGXPvlJ/K wiJ4aCXw/G3VOXG2XFjRfXQZvdRIvQrzurwROJBXT8JmTYG9S+dZ9KZDl24oNRvJAHh8 pVmCuOuJauH2XCWbAtjXvYxuiteh+JkGxVQVKIIySoTNwH+MYk2dKfDRaH0kXrhb1Hof XTX1WDYRr4v9vKbNzDNEbJYNb+DJcZc53r91RctX5qGoa19wNjNKwxp2mWQBf0EA8A2Z DzyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=sender:x-gm-message-state:mime-version:from:to:cc:subject:date :message-id:in-reply-to:references:x-original-sender :x-original-authentication-results:precedence:mailing-list:list-id :x-spam-checked-in-group:list-post:list-help:list-archive :list-subscribe:list-unsubscribe; bh=N0CHUycAUuSZplIIETJI+CtdIsiYZ8SA2ZP6PFSiw8M=; b=mnphrRxuZmyriiUbT7Ij7iP9FG66DkUaRL/zRa8lbuovCb2rbhD0RQ6MHjTj8pwpnC dr8h9FX51NUDEyPkqhrmP9yZI1KQaND3udx2f0iDpKwQhQGjM8WKKbSATYe6CBhz8FLG oEXgw4o60Kt1ay0WSB0LTOsUSJaZOzvAia8uamDX5KaaKuBMeVA/X21sawFUYDZpTy81 DpFmbaxzdOqdXqUcSnSI5iSmCrtm+zcCQgJpHZgv0mYogVVdv5jjonbxLAO98xavkVlW M7CHXzNPHDfvNGsAkbmEqjaOHowD4wlypaeSbZJ8HxnBJiazz9C6ZLFghw+eZAHjOhoN heLg== Sender: swupdate@googlegroups.com X-Gm-Message-State: AKwxytfnPupcatQo4ktWwWSoq1Pvz1XtHv0CYH7JA7gqEiGJKHjsyTic JU0W1ZToXxP0E1bMU8kZnGU= X-Google-Smtp-Source: ACJfBou5T5EEr0cihvZUGh3Zd1bWWQkdceOWcTUO4iHTJSqz81t2Xs1/3X7XVgtdLDcg00BaE7AYug== X-Received: by 10.28.54.133 with SMTP id y5mr51997wmh.7.1515769297849; Fri, 12 Jan 2018 07:01:37 -0800 (PST) MIME-Version: 1.0 X-BeenThere: swupdate@googlegroups.com Received: by 10.80.241.77 with SMTP id z13ls504039edl.1.gmail; Fri, 12 Jan 2018 07:01:37 -0800 (PST) X-Received: by 10.80.146.139 with SMTP id k11mr3050313eda.4.1515769297042; Fri, 12 Jan 2018 07:01:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515769297; cv=none; d=google.com; s=arc-20160816; b=QgLBf+0/JV8PVumYdp03pCZlDGzG9qdRB0ftbwAv/44J2S7ER3FCvg2mxX5ehRiJlj rqo7b3FOWHmcovZs5FyJKTKRNVbMydoqlh7gjXyFGPUM9BVj5zmjfBYekHBh1MGVDUYm oKkjWQx2YMzJAWVanR/HbLiB7LzsAGMrL3H3H0CAEn5UDH9H5gD0zxeTqTB7earVR7UJ q5A6dA6dvlMQax0ieiGVDXRjRlLRDxbBQOcfLvoBwEmVvRTEyFaFTUPtxzmNsMidJilG giB3S6ruSB6hxTP8aVeRZyl1LAwNRlNyfbSCDqhSi7SGCt/Gvpi5Q1SDsMY9JyGbAq9G RpRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=references:in-reply-to:message-id:date:subject:cc:to:from :arc-authentication-results; bh=2id0EEIp60L/xrL2pkQDFk+EGM3l2nSHcvtxm4t2KWE=; b=JjT5xShm8SY62WP0g7jI2RpKz9zGNzYhPlDsaiPVaM1zVR6KM41J/V+exZkLvOg7oC +WaTSRGzwn4/jJCrFZYSJHUk+TIQ1NgwSNVk1FdNLS7dB8nd2NrS5IKEQhhTnCUITl/V tf8/dIjbT6Ak/5u0PNy4kBZufY8gLtwIemR6aOCezmM1jc6G9NOBEkh935WYtABYMYvK GBsnF5+JqorYNqHoVXoq65+3ENUU/4hMRm2VNQjlpEQGa6zUc42ncHVqQcvfmIvxW5Vy GkArAseUGvS+RvI+NJVu4qOrfbnYcfvyv5aW6oiwMbou9t9e1Aq9cIJYzZHZypNJ59QM qdOA== ARC-Authentication-Results: i=1; gmr-mx.google.com; spf=neutral (google.com: 85.13.157.12 is neither permitted nor denied by best guess record for domain of stefan@herbrechtsmeier.net) smtp.mailfrom=stefan@herbrechtsmeier.net Received: from dd41138.kasserver.com (dd41138.kasserver.com. [85.13.157.12]) by gmr-mx.google.com with ESMTPS id w21si368999edl.5.2018.01.12.07.01.36 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 12 Jan 2018 07:01:37 -0800 (PST) Received-SPF: neutral (google.com: 85.13.157.12 is neither permitted nor denied by best guess record for domain of stefan@herbrechtsmeier.net) client-ip=85.13.157.12; Received: from WS08941.weidmueller.com (unknown [217.244.7.16]) by dd41138.kasserver.com (Postfix) with ESMTPSA id 9A52B11A033E; Fri, 12 Jan 2018 16:01:36 +0100 (CET) From: stefan@herbrechtsmeier.net To: swupdate@googlegroups.com Cc: Stefan Herbrechtsmeier Subject: [swupdate] [PATCH v2 4/5] Lua: Dump tables in Lua stack recursive Date: Fri, 12 Jan 2018 15:58:47 +0100 Message-Id: <1515769128-29657-4-git-send-email-stefan@herbrechtsmeier.net> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515769128-29657-1-git-send-email-stefan@herbrechtsmeier.net> References: <1515769128-29657-1-git-send-email-stefan@herbrechtsmeier.net> X-Original-Sender: stefan@herbrechtsmeier.net X-Original-Authentication-Results: gmr-mx.google.com; spf=neutral (google.com: 85.13.157.12 is neither permitted nor denied by best guess record for domain of stefan@herbrechtsmeier.net) smtp.mailfrom=stefan@herbrechtsmeier.net Precedence: list Mailing-list: list swupdate@googlegroups.com; contact swupdate+owners@googlegroups.com List-ID: X-Spam-Checked-In-Group: swupdate@googlegroups.com X-Google-Group-Id: 605343134186 List-Post: , List-Help: , List-Archive: , List-Unsubscribe: , From: Stefan Herbrechtsmeier Signed-off-by: Stefan Herbrechtsmeier --- Changes in v2: None corelib/lua_interface.c | 87 +++++++++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 36 deletions(-) diff --git a/corelib/lua_interface.c b/corelib/lua_interface.c index b1a3a92..872cb2f 100644 --- a/corelib/lua_interface.c +++ b/corelib/lua_interface.c @@ -74,8 +74,54 @@ static bool is_type(lua_State *L, uintptr_t type) } #endif +static void lua_dump_table(lua_State *L, char *str) +{ + char *s; + + /* Stack: table, ... */ + lua_pushnil(L); + /* Stack: nil, table, ... */ + while (lua_next(L, -2)) { + /* Stack: value, key, table, ... */ + lua_pushvalue(L, -2); + /* Stack: key, value, key, table, ... */ + switch(lua_type(L, -2)) { + case LUA_TSTRING: + case LUA_TNUMBER: + TRACE("%s %s = %s", str, + lua_tostring(L, -1), + lua_tostring(L, -2)); + break; + case LUA_TFUNCTION: + TRACE("%s %s()", str, + lua_tostring(L, -1)); + break; + case LUA_TTABLE: + if (asprintf(&s, "%s %s:", str, lua_tostring(L, -1)) != -1) { + lua_pushvalue(L, -2); + lua_dump_table(L, s); + lua_pop(L, 1); + free(s); + } + break; + case LUA_TBOOLEAN: + TRACE("%s %s = %s", str, + lua_tostring(L, -1), + (lua_toboolean(L, -2) ? "true" : "false")); + break; + default: + TRACE("%s %s = ", str, + lua_tostring(L, -1)); + } + lua_pop(L, 2); + /* Stack: key, table, ... */ + } + /* Stack: table, ... */ +} + void LUAstackDump(lua_State *L) { + char *s; int top = lua_gettop(L); for (int i = 1; i <= top; i++) { int t = lua_type(L, i); @@ -97,43 +143,12 @@ void LUAstackDump(lua_State *L) break; } case LUA_TTABLE: { - lua_pushvalue(L, -1); - lua_pushnil(L); - /* Stack: nil, table */ - while (lua_next(L, -2)) { - /* Stack: value, key, table */ - lua_pushvalue(L, -2); - /* Stack: key, value, key, table */ - switch(lua_type(L, -2)) { - case LUA_TSTRING: - case LUA_TNUMBER: - TRACE("(%d) [table ] %s = %s", i, - lua_tostring(L, -1), - lua_tostring(L, -2)); - break; - case LUA_TFUNCTION: - TRACE("(%d) [table ] %s()", i, - lua_tostring(L, -1)); - break; - case LUA_TTABLE: - TRACE("(%d) [table ] %s ", i, - lua_tostring(L, -1)); - break; - case LUA_TBOOLEAN: - TRACE("(%d) [table ] %s = %s", i, - lua_tostring(L, -1), - (lua_toboolean(L, -2) ? "true" : "false")); - break; - default: - TRACE("(%d) [table ] %s = ", i, - lua_tostring(L, -1)); - } - lua_pop(L, 2); - /* Stack: key, table */ + if (asprintf(&s, "(%d) [table ]", i) != -1) { + lua_pushvalue(L, -1); + lua_dump_table(L, s); + lua_pop(L, 1); + free(s); } - /* Stack: table */ - lua_pop(L, 1); - /* Stack: */ break; } default: {