From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from zero.zsh.org (zero.zsh.org [IPv6:2a02:898:31:0:48:4558:7a:7368]) by inbox.vuxu.org (Postfix) with ESMTP id D184522546 for ; Sat, 24 Feb 2024 00:24:19 +0100 (CET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1708730659; b=Q33+7IzZYOQjntBvUpDQus9D60DfCyOBEGKbRzv9gakPNHEt5jvcY1YHhUOjg0BdVBqb3hPFy6 fuGSELx2p1ahQyXSoKzPFf2ztqstewM1fzoHchvUAL050X/yGx4lsQ3/NA/t8OozMgRk1peh7o MiDA9w3Mlo8eUNzXNQbxxfdCo5fbEXFIS0mPZCNOqo3RJzCENR2vcBys6rXv3sAHMm87S8Nab8 mXRrnqYl4nvfTrLBRFCsDOkOF3pp3RGtJHrbL6+/pw43uqN05SE1/ig8rAJWXA+Et+Z0NWj4bV 5jQbtE21qh5Ia/k1YnM0MsG9MNVo/MxCYAgUMZF5HwoU2w==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f42.google.com) smtp.remote-ip=209.85.218.42; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 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=1708730659; bh=Yopprq3yOgaNnK667VngweUzA/aNDhH8qMMSSPm15yg=; 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=Qn2kzEhpoD6PqvMglBpmdBgc2CaOqDjClIyF/o6wU9Ptd0QQWAal3vE09HFVNHkrHLiR6xtPpe RtsdhY3oCE+rWppzJ2xf9qjsXpkS1sEaei6uWUh42lUFxbgQDgymQO4j8VrXRRbkgZeiRHvr/L hkKGuDViS6dEh0egGnlaiXUlc5SPGqfRvJh4ZgBOYVw/d3tpR7OatGurSke4KGiGLNiw7+ajXT FnNO6q6BHHWzTcdV5jQc+TSKsAtvrZGgBkI7gQSjTxmE1OFg8aLR5TACwLvvI0+Q0FfWVnKofW WcjlGc+tzQIwgDin7yQ7IS15hi3E9gcX8JLp4aSPGMF8jQ==; 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=RvKkfllgVN2lZ8piGcCZ03a5p7op2eaU9troXqekzR4=; b=XyG4ELCp7+eyhetY4P+qA1v+fD Izt+nKKIMSCi5dSTkPc1OyN492MF1n3FBM+kkWFZlslfL/kcCBQumQIIumiJMwi6yO003KyoPgMQj 80AD2mEKwqdHYk/emoRhyRsvu+oK5EGz2NOp5acXxrYYMjkxAsZBUOQeggt7QC9SbATTBKMM6itXN uQtbrdL5QatLSAfWzC2mMxLesbK7xexMbv3psJJ+dzID8b1JgpfysAJVEztwLtrQaR6DvvfM13VYC imZCWzlm9O/CA8gFWbWnH266hhw5L+2UwZ3Trif+4/jTsa68y4LedkR4Lfl48HAird5gLxLwb+yzi 0ABHfE8w==; Received: by zero.zsh.org with local id 1rdetv-0001Te-1G; Fri, 23 Feb 2024 23:24:19 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f42.google.com) smtp.remote-ip=209.85.218.42; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ej1-f42.google.com ([209.85.218.42]:53746) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1rdetf-00019h-Vt; Fri, 23 Feb 2024 23:24:05 +0000 Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-a3d484a58f6so195088066b.3 for ; Fri, 23 Feb 2024 15:24:03 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1708730643; x=1709335443; darn=zsh.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=RvKkfllgVN2lZ8piGcCZ03a5p7op2eaU9troXqekzR4=; b=axZjFwjSstUV0x4weDJ6wfZ5Qck97IkHxh5fnc5RM6Krh/ci3taZT1WEnrfkf4bArx T1cTzc2x7kAnyGDzicA+7LrZLITsUXnkIU4PuFJoGREXH9LRvWtoVzT4QKG3N+Oaf6vm Ld3lMxTWzLVhubXf2u/+QqOTm2TqXgjKXnjHhceuVGU9y4DT07IfvBgGoeAQsjsCh4z8 t3wow67V3UevNqyHF+DNR0Sm47kr+bG2M6+u/n55X0D1vxVouqZyGM9gH+lJ+Gmf06kF JQ3h5PMIwF6O1UwVGiKNyjy4a+eKzDOTmyJ2AZ6eBzRyrTPA/7vT4bhNn8vhOwXKkGKN 5NtA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708730643; x=1709335443; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=RvKkfllgVN2lZ8piGcCZ03a5p7op2eaU9troXqekzR4=; b=gnmOJTZkrSYxAsVicB+tFPIJE+rkvgiEJz/b83kNQTxUr7G6n7sXT+tWPAPxeukAgh R2EkpJ5XC/PuvISo5/gOqqIN/RfazhqktckeVXUDtCDDSybvGebgEsTB04pV+jIBCtgh 1Dlt0yQMZUigzzxU9K4W9FD3IMw1rd7Ue1KjXSgHJDulJsVxf64YRnC4gGSYchwmZVmu gUflW14O1PmDiKiqpR3wTYh28IK/OWwS0wtBZwRn0pso1JAsCrqIT9xetjUCX1jBey+2 CGhDGTi9v0oLVZp/0ZNmTnTwcqGcT2QnLaa1pG3Ttr1QEZQq0wT6bUj/uwJaq5gVotUq a0cQ== X-Gm-Message-State: AOJu0YxF0yHj3b7PscU5Su+m3akUKYuludXbgmHnVl/ZVQJAnIqJ3OP3 tl8buWVSs1pXJ69ktLOB+DFDyWlq25iMAMn1RWrhge5hjlxcFi6gBStxk3fPzpP5mZHls6NaYJs BGFLvida4LZPn31QHtJrxmuzy7omdWriUHHcQOxfLyTMyTteWJA== X-Google-Smtp-Source: AGHT+IHrACXHFEtkUYqdxvKinrNIM2qryzigPITyEKbsxmr4jRlvOWoQZR8eSdGVzn/ocVHvZC3tEPwE+YIB8+jvkLE= X-Received: by 2002:a17:906:34cd:b0:a3f:870:535c with SMTP id h13-20020a17090634cd00b00a3f0870535cmr738374ejb.44.1708730643442; Fri, 23 Feb 2024 15:24:03 -0800 (PST) MIME-Version: 1.0 From: Bart Schaefer Date: Fri, 23 Feb 2024 15:23:52 -0800 Message-ID: Subject: Example / partial fix for printf with math expressions To: Zsh hackers list Content-Type: text/plain; charset="UTF-8" X-Seq: 52587 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: No attachment, so beware line wrap. This repairs (printf "%d" ...) but obviously hasn't touched any of the several other places where bin_print() calls matheval() and friends. Upshot, math expects to get metafied strings, bin_print() does not (or at least not always) pass them that way. I also did not investigate whether curarg needs a known length rather than calling metafy with -1, but since math is internally going to stop at nul bytes anyway, I don't think it matters. Also because the strings are metafied, checkunary() needs some MULTIBYTE tweaking to get the count right and not split characters in the middle when showing an error. Someone who works more with that should investigate. diff --git a/Src/builtin.c b/Src/builtin.c index dd352c146..5fccbac6d 100644 --- a/Src/builtin.c +++ b/Src/builtin.c @@ -5465,7 +5465,8 @@ bin_print(char *name, char **args, Options ops, int func) *d++ = 'l'; #endif *d++ = 'l', *d++ = *c, *d = '\0'; - zlongval = (curarg) ? mathevali(curarg) : 0; + zlongval = (curarg) ? + mathevali(metafy(curarg, -1, META_HEAPDUP)) : 0; if (errflag) { zlongval = 0; errflag &= ~ERRFLAG_ERROR;