You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
295 lines
9.7 KiB
295 lines
9.7 KiB
From cb54210f7f02b07768cfbf49ae266d487f580e1b Mon Sep 17 00:00:00 2001 |
|
From: rpm-build <rpm-build> |
|
Date: Thu, 29 Jun 2017 15:32:58 +0200 |
|
Subject: [PATCH] Move /tmp to /var/tmp |
|
|
|
Fedora is using tmpfs which is limited by the size of RAM, thus we need |
|
to use different directory on different filesystem. |
|
--- |
|
ui/qt/about_dialog.cpp | 3 +- |
|
ui/qt/iax2_analysis_dialog.cpp | 5 +-- |
|
ui/qt/rtp_analysis_dialog.cpp | 5 +-- |
|
ui/qt/rtp_audio_stream.cpp | 3 +- |
|
wsutil/tempfile.c | 9 +++--- |
|
wsutil/tempfile.h | 4 +-- |
|
wsutil/wstmpdir.c | 70 ++++++++++++++++++++++++++++++++++++++++++ |
|
wsutil/wstmpdir.h | 39 +++++++++++++++++++++++ |
|
8 files changed, 132 insertions(+), 11 deletions(-) |
|
create mode 100644 wsutil/wstmpdir.c |
|
create mode 100644 wsutil/wstmpdir.h |
|
|
|
diff --git a/ui/qt/about_dialog.cpp b/ui/qt/about_dialog.cpp |
|
index 31dc581..2f74285 100644 |
|
--- a/ui/qt/about_dialog.cpp |
|
+++ b/ui/qt/about_dialog.cpp |
|
@@ -26,6 +26,7 @@ |
|
|
|
#include "wireshark_application.h" |
|
#include <wsutil/filesystem.h> |
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */ |
|
|
|
#include <QDesktopServices> |
|
#include <QUrl> |
|
@@ -206,7 +206,7 @@ FolderListModel::FolderListModel(QObject * parent): |
|
appendRow(QStringList() << tr("\"File\" dialogs") << get_last_open_dir() << tr("capture files")); |
|
|
|
/* temp */ |
|
- appendRow(QStringList() << tr("Temp") << g_get_tmp_dir() << tr("untitled capture files")); |
|
+ appendRow(QStringList() << tr("Temp") << get_tmp_dir() << tr("untitled capture files")); |
|
|
|
/* pers conf */ |
|
appendRow(QStringList() << tr("Personal configuration") |
|
diff --git a/ui/qt/iax2_analysis_dialog.cpp b/ui/qt/iax2_analysis_dialog.cpp |
|
index ee4e5fd..fe17a95 100644 |
|
--- a/ui/qt/iax2_analysis_dialog.cpp |
|
+++ b/ui/qt/iax2_analysis_dialog.cpp |
|
@@ -37,6 +37,7 @@ |
|
#include "ui/rtp_stream.h" |
|
#endif |
|
#include <wsutil/utf8_entities.h> |
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */ |
|
|
|
#include <wsutil/g711.h> |
|
#include <wsutil/pint.h> |
|
@@ -271,10 +272,10 @@ Iax2AnalysisDialog::Iax2AnalysisDialog(QWidget &parent, CaptureFile &cf) : |
|
|
|
// We keep our temp files open for the lifetime of the dialog. The GTK+ |
|
// UI opens and closes at various points. |
|
- QString tempname = QString("%1/wireshark_iax2_f").arg(QDir::tempPath()); |
|
+ QString tempname = QString("%1/wireshark_iax2_f").arg(get_tmp_dir()); |
|
fwd_tempfile_ = new QTemporaryFile(tempname, this); |
|
fwd_tempfile_->open(); |
|
- tempname = QString("%1/wireshark_iax2_r").arg(QDir::tempPath()); |
|
+ tempname = QString("%1/wireshark_iax2_r").arg(get_tmp_dir()); |
|
rev_tempfile_ = new QTemporaryFile(tempname, this); |
|
rev_tempfile_->open(); |
|
|
|
diff --git a/ui/qt/rtp_analysis_dialog.cpp b/ui/qt/rtp_analysis_dialog.cpp |
|
index 5d82e46..8008984 100644 |
|
--- a/ui/qt/rtp_analysis_dialog.cpp |
|
+++ b/ui/qt/rtp_analysis_dialog.cpp |
|
@@ -37,6 +37,7 @@ |
|
|
|
#include <wsutil/g711.h> |
|
#include <wsutil/pint.h> |
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */ |
|
|
|
#include <QMessageBox> |
|
#include <QPushButton> |
|
@@ -331,10 +332,10 @@ RtpAnalysisDialog::RtpAnalysisDialog(QWidget &parent, CaptureFile &cf, struct _r |
|
|
|
// We keep our temp files open for the lifetime of the dialog. The GTK+ |
|
// UI opens and closes at various points. |
|
- QString tempname = QString("%1/wireshark_rtp_f").arg(QDir::tempPath()); |
|
+ QString tempname = QString("%1/wireshark_rtp_f").arg(get_tmp_dir()); |
|
fwd_tempfile_ = new QTemporaryFile(tempname, this); |
|
fwd_tempfile_->open(); |
|
- tempname = QString("%1/wireshark_rtp_r").arg(QDir::tempPath()); |
|
+ tempname = QString("%1/wireshark_rtp_r").arg(get_tmp_dir()); |
|
rev_tempfile_ = new QTemporaryFile(tempname, this); |
|
rev_tempfile_->open(); |
|
|
|
diff --git a/ui/qt/rtp_audio_stream.cpp b/ui/qt/rtp_audio_stream.cpp |
|
index fde66c8..b9531d2 100644 |
|
--- a/ui/qt/rtp_audio_stream.cpp |
|
+++ b/ui/qt/rtp_audio_stream.cpp |
|
@@ -37,6 +37,7 @@ |
|
#include <ui/rtp_stream.h> |
|
|
|
#include <wsutil/nstime.h> |
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */ |
|
|
|
#include <QAudioFormat> |
|
#include <QAudioOutput> |
|
@@ -76,7 +77,7 @@ RtpAudioStream::RtpAudioStream(QObject *parent, _rtp_stream_info *rtp_stream) : |
|
visual_sample_rate_, SPEEX_RESAMPLER_QUALITY_MIN, NULL); |
|
speex_resampler_skip_zeros(visual_resampler_); |
|
|
|
- QString tempname = QString("%1/wireshark_rtp_stream").arg(QDir::tempPath()); |
|
+ QString tempname = QString("%1/wireshark_rtp_stream").arg(get_tmp_dir()); |
|
tempfile_ = new QTemporaryFile(tempname, this); |
|
tempfile_->open(); |
|
|
|
diff --git a/wsutil/tempfile.c b/wsutil/tempfile.c |
|
index 5082452..f751a7c 100644 |
|
--- a/wsutil/tempfile.c |
|
+++ b/wsutil/tempfile.c |
|
@@ -12,10 +12,12 @@ |
|
|
|
#include <glib.h> |
|
#include "tempfile.h" |
|
+#include <wsutil/file_util.h> |
|
+#include <wsutil/wstmpdir.h> /* for get_tmp_dir() */ |
|
|
|
/** |
|
* Create a tempfile with the given prefix (e.g. "wireshark"). The path |
|
- * is created using g_file_open_tmp. |
|
+ * is created using get_tmp_dir. |
|
* |
|
* @param namebuf [in,out] If not NULL, receives the full path of the temp file. |
|
* Must be freed. |
|
@@ -30,6 +31,9 @@ create_tempfile(gchar **namebuf, const char *pfx, const char *sfx, GError **err) |
|
{ |
|
int fd; |
|
gchar *safe_pfx = NULL; |
|
+ gchar *tmp_file; |
|
+ const char *tmp_dir; |
|
+ int old_mask; |
|
|
|
if (pfx) { |
|
/* The characters in "delimiters" come from: |
|
@@ -49,7 +53,15 @@ create_tempfile(gchar **namebuf, const char *pfx, const char *sfx, GError **err) |
|
gchar* filetmpl = g_strdup_printf("%sXXXXXX%s", safe_pfx ? safe_pfx : "", sfx ? sfx : ""); |
|
g_free(safe_pfx); |
|
|
|
- fd = g_file_open_tmp(filetmpl, namebuf, err); |
|
+ tmp_dir = get_tmp_dir(); |
|
+ tmp_file = g_strconcat(tmp_dir, "/", filetmpl, NULL); |
|
+ |
|
+ if (namebuf) |
|
+ *namebuf = tmp_file; |
|
+ |
|
+ old_mask = ws_umask(0077); |
|
+ fd = mkstemps(tmp_file, sfx ? (int) strlen(sfx) : 0); |
|
+ ws_umask(old_mask); |
|
|
|
g_free(filetmpl); |
|
return fd; |
|
diff --git a/wsutil/tempfile.h b/wsutil/tempfile.h |
|
index 1dca2df..bb3160c 100644 |
|
--- a/wsutil/tempfile.h |
|
+++ b/wsutil/tempfile.h |
|
@@ -45,7 +45,7 @@ WS_DLL_PUBLIC char *get_tempfile_path(const char *filename); |
|
|
|
/** |
|
* Create a tempfile with the given prefix (e.g. "wireshark"). The path |
|
- * is created using g_file_open_tmp. |
|
+ * is created using get_tmp_dir and mkstemp. |
|
* |
|
* @param namebuf [in,out] If not NULL, receives the full path of the temp file. |
|
* Must be freed. |
|
diff --git a/wsutil/wstmpdir.c b/wsutil/wstmpdir.c |
|
new file mode 100644 |
|
index 0000000..d8b733b |
|
--- /dev/null |
|
+++ b/wsutil/wstmpdir.c |
|
@@ -0,0 +1,71 @@ |
|
+/* wstmpdir.c |
|
+ * |
|
+ * Copyright (C) 2013 Red Hat, Inc. All right reserved. |
|
+ * |
|
+ * Temporary directory routine |
|
+ * |
|
+ * This program is free software; you can redistribute it and/or |
|
+ * modify it under the terms of the GNU General Public License |
|
+ * as published by the Free Software Foundation; either version 2 |
|
+ * of the License, or (at your option) any later version. |
|
+ * |
|
+ * This program is distributed in the hope that it will be useful, |
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
+ * GNU General Public License for more details. |
|
+ * |
|
+ * You should have received a copy of the GNU General Public License |
|
+ * along with this program; if not, write to the Free Software |
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
|
+ * |
|
+ * Author: Peter Hatina <phatina@redhat.com> |
|
+ */ |
|
+ |
|
+#include "config.h" |
|
+ |
|
+#include <glib.h> |
|
+#include "wstmpdir.h" |
|
+ |
|
+/** |
|
+ * Gets the directory to use for temporary files. |
|
+ * |
|
+ * Inspired by glib-2.0. If no TMP, TEMP or TMPDIR is set, |
|
+ * /var/tmp is returned (Fedora specific). |
|
+ * |
|
+ * Returns: the directory to use for temporary files. |
|
+ */ |
|
+const char *get_tmp_dir(void) |
|
+{ |
|
+ static gchar *tmp_dir; |
|
+ |
|
+ if (g_once_init_enter(&tmp_dir)) { |
|
+ gchar *tmp; |
|
+ |
|
+ tmp = g_strdup(g_getenv("TEMP")); |
|
+ if (tmp == NULL || *tmp == '\0') { |
|
+ g_free(tmp); |
|
+ tmp = g_strdup(g_getenv("TMPDIR")); |
|
+ } |
|
+ |
|
+#ifdef P_tmpdir |
|
+ if (tmp == NULL || *tmp == '\0') { |
|
+ gsize k; |
|
+ g_free(tmp); |
|
+ tmp = g_strdup(P_tmpdir); |
|
+ k = strlen(tmp); |
|
+ if (k > 1 && G_IS_DIR_SEPARATOR(tmp[k - 1])) |
|
+ tmp[k - 1] = '\0'; |
|
+ fprintf(stderr, "Using P_tmpdir: %s\n", P_tmpdir); |
|
+ } |
|
+#endif /* P_tmpdir */ |
|
+ |
|
+ if (tmp == NULL || *tmp == '\0') { |
|
+ g_free(tmp); |
|
+ tmp = g_strdup("/var/tmp"); |
|
+ } |
|
+ |
|
+ g_once_init_leave(&tmp_dir, tmp); |
|
+ } |
|
+ |
|
+ return tmp_dir; |
|
+} |
|
diff --git a/wsutil/wstmpdir.h b/wsutil/wstmpdir.h |
|
new file mode 100644 |
|
index 0000000..07ac583 |
|
--- /dev/null |
|
+++ b/wsutil/wstmpdir.h |
|
@@ -0,0 +1,39 @@ |
|
+/* wstmpdir.c |
|
+ * |
|
+ * Copyright (C) 2013 Red Hat, Inc. All right reserved. |
|
+ * |
|
+ * Temporary directory routine |
|
+ * |
|
+ * This program is free software; you can redistribute it and/or |
|
+ * modify it under the terms of the GNU General Public License |
|
+ * as published by the Free Software Foundation; either version 2 |
|
+ * of the License, or (at your option) any later version. |
|
+ * |
|
+ * This program is distributed in the hope that it will be useful, |
|
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
+ * GNU General Public License for more details. |
|
+ * |
|
+ * You should have received a copy of the GNU General Public License |
|
+ * along with this program; if not, write to the Free Software |
|
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
|
+ * |
|
+ * Author: Peter Hatina <phatina@redhat.com> |
|
+ */ |
|
+ |
|
+#ifndef __WS_TMP_DIR_H__ |
|
+#define __WS_TMP_DIR_H__ |
|
+ |
|
+#include "ws_symbol_export.h" |
|
+ |
|
+#ifdef __cplusplus |
|
+extern "C" { |
|
+#endif // __cplusplus |
|
+ |
|
+WS_DLL_PUBLIC const char *get_tmp_dir(void); |
|
+ |
|
+#ifdef __cplusplus |
|
+} |
|
+#endif // __cplusplus |
|
+ |
|
+#endif |
|
-- |
|
2.13.0 |
|
|
|
|