From patchwork Sat Mar 3 07:49:17 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ronnie sahlberg X-Patchwork-Id: 144410 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id D6AF7B6EE8 for ; Sat, 3 Mar 2012 18:50:21 +1100 (EST) Received: from localhost ([::1]:49136 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S3jjP-0001Eo-P0 for incoming@patchwork.ozlabs.org; Sat, 03 Mar 2012 02:50:19 -0500 Received: from eggs.gnu.org ([208.118.235.92]:41332) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S3jis-0000eZ-AO for qemu-devel@nongnu.org; Sat, 03 Mar 2012 02:50:09 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S3jim-0008Cl-Qv for qemu-devel@nongnu.org; Sat, 03 Mar 2012 02:49:45 -0500 Received: from mail-pw0-f45.google.com ([209.85.160.45]:35067) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S3jim-0008Bo-Ha for qemu-devel@nongnu.org; Sat, 03 Mar 2012 02:49:40 -0500 Received: by mail-pw0-f45.google.com with SMTP id uo5so2128329pbc.4 for ; Fri, 02 Mar 2012 23:49:39 -0800 (PST) Received-SPF: pass (google.com: domain of ronniesahlberg@gmail.com designates 10.68.244.99 as permitted sender) client-ip=10.68.244.99; Authentication-Results: mr.google.com; spf=pass (google.com: domain of ronniesahlberg@gmail.com designates 10.68.244.99 as permitted sender) smtp.mail=ronniesahlberg@gmail.com; dkim=pass header.i=ronniesahlberg@gmail.com Received: from mr.google.com ([10.68.244.99]) by 10.68.244.99 with SMTP id xf3mr3453561pbc.154.1330760979656 (num_hops = 1); Fri, 02 Mar 2012 23:49:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=5aL2mW34pww7btTb06oT1gGkR1siaRe4PeRqduJ46UU=; b=WiGjd7OoSgjHvSVxrRSSJz71GkH229bw9NgF9vEKU3Bx596qSLjFJwaCW2pHA9MWNY WM1hm5I1uh2QaB6LTzTjIMDjjPrH5lgRxCueXXqAxkU87NmBC/CURY7q8rtktJNVnQqy 1MZzbVYKIYmnlx6dy6mE+e03eQEzG4Jn8ecOUdRa8iqkNNT+lzSIac9QuKKjQ0/60rGn +THN1VEJPUpQ90EiOz1MnqjGTkZ+05mg3b7jLydAVNaCGFz12wmTPeSnKBSLehIGj/gt Xq/kwh+95vPfVFF26aFGQ5E294wH0s86Jdynyxv1uCV5bz4aeFIZ2nGUYHpjBHi3V/kp OQyg== Received: by 10.68.244.99 with SMTP id xf3mr2945410pbc.154.1330760979478; Fri, 02 Mar 2012 23:49:39 -0800 (PST) Received: from ronniesahlberg@gmail.com (CPE-60-229-38-244.lns7.ken.bigpond.net.au. [60.229.38.244]) by mx.google.com with ESMTPS id l1sm7186521pbs.34.2012.03.02.23.49.36 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 02 Mar 2012 23:49:38 -0800 (PST) Received: by ronniesahlberg@gmail.com (sSMTP sendmail emulation); Sat, 03 Mar 2012 18:49:33 +1100 From: Ronnie Sahlberg To: qemu-devel@nongnu.org, kwolf@redhat.com Date: Sat, 3 Mar 2012 18:49:17 +1100 Message-Id: <1330760957-17122-2-git-send-email-ronniesahlberg@gmail.com> X-Mailer: git-send-email 1.7.3.1 In-Reply-To: <1330760957-17122-1-git-send-email-ronniesahlberg@gmail.com> References: <1330760957-17122-1-git-send-email-ronniesahlberg@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.160.45 Cc: Ronnie Sahlberg Subject: [Qemu-devel] [PATCH] READCONFIG: allow /dev/fd/ the file to use for --readconfig X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org On many platforms /dev/fd/ ise used to refer to open filedescriptor of the running process. If we fail to open the provided filename and if the filename starts with '/dev/fd/' then assume this is a platform which do not support these special files. In that case read out the descriptor value from the provided string and fdopen it. This allows to use /dev/fd/ syntax on all platforms, those that do provide this indeface in /dev and an emulation of this for the platforms that do not provide /dev/fd Signed-off-by: Ronnie Sahlberg --- qemu-config.c | 16 +++++++++++++++- qemu-options.hx | 3 ++- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/qemu-config.c b/qemu-config.c index 7d9da78..7abc08d 100644 --- a/qemu-config.c +++ b/qemu-config.c @@ -814,9 +814,23 @@ out: int qemu_read_config_file(const char *filename) { - FILE *f = fopen(filename, "r"); + FILE *f; int ret; + f = fopen(filename, "r"); + + if (f == NULL && strncmp(filename, "/dev/fd/", 8)) { + int fd; + char *ptr = NULL; + + errno = 0; + fd = strtol(filename + 8, &ptr, 10); + if (errno != 0 || ptr == filename + 8 || *ptr != '\0') { + return -EINVAL; + } + f = fdopen(fd, "r"); + } + if (f == NULL) { return -errno; } diff --git a/qemu-options.hx b/qemu-options.hx index b129996..c70c6e7 100644 --- a/qemu-options.hx +++ b/qemu-options.hx @@ -2650,7 +2650,8 @@ DEF("readconfig", HAS_ARG, QEMU_OPTION_readconfig, STEXI @item -readconfig @var{file} @findex -readconfig -Read device configuration from @var{file}. +Read device configuration from @var{file}. Use '/dev/fd/' as filename +to read from an existing, inherited, filedesriptor. ETEXI DEF("writeconfig", HAS_ARG, QEMU_OPTION_writeconfig, "-writeconfig \n"