Create an anonymous inode in /tmp using O_TMPFILE and attempt to link the
file in place using linkat(). Only fall back to the old file copy when
linking the tempfile fails.
Avoids double memory use if both the temporary upload file and the
destination file are located in /tmp.
Ref: https://github.com/openwrt/luci/issues/3654
Signed-off-by: Jo-Philipp Wich <jo@mein.io>
(cherry picked from commit 4f4a7e9532
)
46 lines
1.1 KiB
Makefile
46 lines
1.1 KiB
Makefile
#
|
|
# Copyright (C) 2015 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=cgi-io
|
|
PKG_RELEASE:=18
|
|
|
|
PKG_LICENSE:=GPL-2.0-or-later
|
|
|
|
PKG_MAINTAINER:=John Crispin <blogic@openwrt.org>
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
include $(INCLUDE_DIR)/cmake.mk
|
|
|
|
define Package/cgi-io
|
|
SECTION:=net
|
|
CATEGORY:=Network
|
|
SUBMENU:=Web Servers/Proxies
|
|
DEPENDS:=+libubox +libubus
|
|
TITLE:=CGI utility for handling up/downloading of files
|
|
endef
|
|
|
|
define Package/cgi-io/description
|
|
This package contains an cgi utility that is useful for up/downloading files
|
|
endef
|
|
|
|
define Build/Prepare
|
|
mkdir -p $(PKG_BUILD_DIR)
|
|
$(CP) ./src/* $(PKG_BUILD_DIR)/
|
|
endef
|
|
|
|
define Package/cgi-io/install
|
|
$(INSTALL_DIR) $(1)/usr/libexec $(1)/www/cgi-bin/
|
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/cgi-io $(1)/usr/libexec
|
|
$(LN) ../../usr/libexec/cgi-io $(1)/www/cgi-bin/cgi-upload
|
|
$(LN) ../../usr/libexec/cgi-io $(1)/www/cgi-bin/cgi-download
|
|
$(LN) ../../usr/libexec/cgi-io $(1)/www/cgi-bin/cgi-backup
|
|
$(LN) ../../usr/libexec/cgi-io $(1)/www/cgi-bin/cgi-exec
|
|
endef
|
|
|
|
$(eval $(call BuildPackage,cgi-io))
|