From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 5160 invoked from network); 7 Sep 2021 04:29:59 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 7 Sep 2021 04:29:59 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1630988999; b=ayJVOslaQJLrD1yDnTibf0YIGqZDRWjcND+DCKrbADK9T93g8LxeDABYWKW9016zq8PhPZ0BH5 yVKBasTS6cFQL0n5P2A90OTkLXlgxJQqGvVXjSt3oBqAJDqrVSVar663Gl5V2MgI2mJyV60fzr rzGH29kbp25fRTGzipaEjKISHJ+USx+a7UMPbZxj/wFdFJOGFqD5tZocw7OZSQ8+tLwNeS0Ga8 qUiTx4JUiu0MzAUDXua3pB+gcAABmGUQa1jh4vN51SEgkMhPqthl9fNLgcdhTlddLc5UXL56/T UZZGrjLseD4dlUZ/yJxPPcsVWXYyuqU5KtJDdBWZbn6Sfw==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-yb1-f178.google.com) smtp.remote-ip=209.85.219.178; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1630988999; bh=giSh6jV6sTzM1ugv56UJZtYGCFW9xHYS0jnkWtLNhD8=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=LhrtLapdCnK3bBxQw6G8hsUNgieGo346C7SAHE6dGEO/SYRJnajQ3M90y1i8q4Oy3R1U4BVg2q 0q7h4wKnrkxqkvCG7NW/8iBvcFYCcj9RrN1gaHa51vW4UVExVtS9naA2NJ9WnxKb6iK+Lz8n8n LeFD9jlwFkSXIZTLhHO5gR4rQ1ueSsVSqT6vzpcGDKo7er+9LNIt3Aahfb030RosJmaS/eHPHs 4SbO4CzBVnKN3DlJhyH8M9TRL5TcoHTANuncYdrt9kfdMpLwmJO5DnjsgZafQRN8QGVQJn5hqT FzZjOJuZ44XqVod5KdSLXsZrZIXsa44sq8YDyt6Wfblv5w==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=4C9N6obs+1U5Y7YGX2XCvNhutAdfmeydVfjuChp58hE=; b=h8usD4gI6EGWcOffVpH1hEmwWt EhtwcU4BddFpAT7rGfDIujisqNXyQQPctMMx8FQ42j84uZNwHPqE0QMFevzbhTOkxfMRA4A/AVrPm ZAysbigNy15J0CoeI3+9gcJOE4w5fVgzHrmJ6k2BGe2k81kEYCpy0eFTIdML6SAWJq1yNpc7bkyin qyDFb4yynNuQBgoKubo5aS1Rp2etInS3IJKH68A8mGGXXT178S5jxwpVmDUSFjBWAeGB4Aat9AS6Y O4t2dpd6AmltClAbNrM3uT6zBcEav1Hsyguv7MRvfwZ181D7KCEjpxJs6WyvmnWwFiPt+aY9hGgcQ hiKspy+g==; Received: from authenticated user by zero.zsh.org with local id 1mNSk6-000AIv-9e; Tue, 07 Sep 2021 04:29:54 +0000 Authentication-Results: zsh.org; iprev=pass (mail-yb1-f178.google.com) smtp.remote-ip=209.85.219.178; dkim=pass header.d=brasslantern-com.20150623.gappssmtp.com header.s=20150623 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-yb1-f178.google.com ([209.85.219.178]:33300) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1mNSjX-0009zn-R3; Tue, 07 Sep 2021 04:29:20 +0000 Received: by mail-yb1-f178.google.com with SMTP id e133so17355940ybh.0 for ; Mon, 06 Sep 2021 21:29:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=4C9N6obs+1U5Y7YGX2XCvNhutAdfmeydVfjuChp58hE=; b=Y5wiKB/oO+iupUyYjsB/jTPXRl8v6AhwEI0FGIqmzt8Zui5vfiqMjdJ1b5WZA7cKMw ot/BfWGTarhTqPoPU75/xpxP54eMzQNTpP8ZAhNkgvBqvybahZAonSa/0QriA/A/JTQE GJF9QfGdU3HpvrNgM7vxQNYlU6eaBsrSBy3QSSYP7YLoIP/JpSAMj49QMn6snkmE6Gbt SgHzo2Ma5YBRW9nsULyp8nRIyl6mN6PDMpXxo3lJXpHA5b4ROxnuaKJTTdrtTiOxC+rh LdLQH5fEQ0shgz8k/s6rnXUENsJJcT3R+CqYo4k/ZG6l9vIhDZPzK0x6QkiT4hkeEFra o5zQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=4C9N6obs+1U5Y7YGX2XCvNhutAdfmeydVfjuChp58hE=; b=ZeKIncVkVtTI9WGIDCLjKHztQa0Qvym+SaAe/5Li/fgz5eIVLx0lDx9MLowEt34Glf Jb66JQZRh96xUwpiVbDEx1mjFLHN+BgELWKNWGH4z+NqTMA83f9miMXcx3K8H4yiWxfS Y5tGAFfjuHoAkya8jSyoc900yYmU8Eq1yM7VDq7cSLcIG/fD8hStmkAGFH2kpSwvf8m4 IJf39bkOrnoAAjZOJHUZFU7nBlGoDT4VMyuYm2B3Z+KYbRP8jqj3qT5XFV0sRSAzfX7Z j+6EYWq8P7v7WoViaDfTSggxnyoxZs4t5QteQuAv/QpUm2I8TKbxA52E1XNL9fjdm7u0 8h9w== X-Gm-Message-State: AOAM531bj7Az0kLSBygx1dSYcgsCFvu5x+sxrP9YUHZAbglarEzBZ/la 9Nfi23qCB83Dr75bpG6xNMLf834/84gYU8U/KFrxLSl5yuGaZQ== X-Google-Smtp-Source: ABdhPJwX/O3/RIZjKxdZDNmAm5oSe0OhDS99mPEgT2/0PR4Dy9o82VeVjl9lpDob7L1zKf+qyAJUkzO1jmkWMM1PiXs= X-Received: by 2002:a05:6902:150c:: with SMTP id q12mr17915597ybu.410.1630988958345; Mon, 06 Sep 2021 21:29:18 -0700 (PDT) MIME-Version: 1.0 From: Bart Schaefer Date: Mon, 6 Sep 2021 21:29:07 -0700 Message-ID: Subject: zsh/db oddities To: Zsh hackers list Content-Type: text/plain; charset="UTF-8" X-Seq: 49382 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: List-Subscribe: List-Unsubscribe: List-Post: List-Owner: List-Archive: The only example so far is of course zsh/db/gdbm. Open a database as a global and assign something to it: % zmodload zsh/db/gdbm ztie -d db/gdbm -f sample.gdbm sampledb % sampledb[GLOBAL]=global % cksum sample.gdbm 3454148649 16384 sample.gdbm Now start messing with the declaration in a function: % () { cksum sample.gdbm local sampledb typeset +m sampledb cksum sample.gdbm sampledb[INFUNC]=set cksum sample.gdbm print $sampledb[INFUNC] } 3454148649 16384 sample.gdbm association local sampledb 2087515864 16384 sample.gdbm 2669724292 16384 sample.gdbm set As soon as the tied parameter is declared local, the file has been written, erasing all the existing values. This seems undesirable? Returning to the top level: % cksum sample.gdbm 1634404396 16384 sample.gdbm % typeset -p sampledb typeset -A sampledb=( [GLOBAL]=global ) The file has been written again and the original state is back. If instead you zuntie the local: % () { local sampledb sampledb[LOCAL]=local zuntie sampledb } % typeset -p sampledb typeset: no such variable: sampledb Untying the local destroys the global, too, and leaves the file as the local wrote it. % ztie -d db/gdbm -f sample.gdbm sampledb % typeset -p sampledb typeset -A sampledb=( [LOCAL]=local ) I think the correct thing might be to prohibit changing the scope, similar to what happens when an attempt is made to remove the readonly attribute? % ztie -r -d db/gdbm -f sample.gdbm sampledb % () { local -A +r sampledb } (anon):local:1: sampledb: can't change type of a special parameter Re-ztie-ing the database file while it is still tied, is already handled as an error.