annotate gui/konsole/ShellCommand.cpp @ 14242:637675470c58 gui

Added OctaveDEs konsole sources.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Sun, 22 Jan 2012 14:18:05 +0100
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14242
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
1 /*
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
2 Copyright 2007-2008 by Robert Knight <robertknight@gmail.com>
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
3
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
4 This program is free software; you can redistribute it and/or modify
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
5 it under the terms of the GNU General Public License as published by
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
6 the Free Software Foundation; either version 2 of the License, or
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
7 (at your option) any later version.
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
8
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
9 This program is distributed in the hope that it will be useful,
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
12 GNU General Public License for more details.
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
13
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
14 You should have received a copy of the GNU General Public License
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
15 along with this program; if not, write to the Free Software
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
17 02110-1301 USA.
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
18 */
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
19
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
20 // Own
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
21 #include "ShellCommand.h"
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
22
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
23 // Qt
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
24 //#include <KShell>
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
25 //#include <KDebug>
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
26
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
27 using namespace Konsole;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
28
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
29 // expands environment variables in 'text'
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
30 // function copied from kdelibs/kio/kio/kurlcompletion.cpp
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
31 static bool expandEnv(QString& text);
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
32
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
33 ShellCommand::ShellCommand(const QString& fullCommand)
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
34 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
35 //_arguments = KShell::splitArgs(fullCommand);
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
36 bool inQuotes = false;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
37
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
38 QString builder;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
39
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
40 for ( int i = 0 ; i < fullCommand.count() ; i++ )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
41 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
42 QChar ch = fullCommand[i];
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
43
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
44 const bool isLastChar = ( i == fullCommand.count() - 1 );
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
45 const bool isQuote = ( ch == '\'' || ch == '\"' );
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
46
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
47 if ( !isLastChar && isQuote )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
48 inQuotes = !inQuotes;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
49 else
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
50 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
51 if ( (!ch.isSpace() || inQuotes) && !isQuote )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
52 builder.append(ch);
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
53
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
54 if ( (ch.isSpace() && !inQuotes) || ( i == fullCommand.count()-1 ) )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
55 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
56 _arguments << builder;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
57 builder.clear();
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
58 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
59 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
60 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
61
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
62 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
63 ShellCommand::ShellCommand(const QString& command , const QStringList& arguments)
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
64 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
65 _arguments = arguments;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
66
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
67 if ( !_arguments.isEmpty() )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
68 _arguments[0] == command;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
69 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
70 QString ShellCommand::fullCommand() const
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
71 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
72 QStringList quotedArgs(_arguments);
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
73 for (int i=0;i<quotedArgs.count();i++)
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
74 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
75 QString arg = quotedArgs.at(i);
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
76 bool hasSpace = false;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
77 for (int j=0;j<arg.count();j++)
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
78 if (arg[j].isSpace())
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
79 hasSpace = true;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
80 if (hasSpace)
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
81 quotedArgs[i] = '\"' + arg + '\"';
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
82 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
83 return quotedArgs.join(QChar(' '));
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
84 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
85 QString ShellCommand::command() const
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
86 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
87 if ( !_arguments.isEmpty() )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
88 return _arguments[0];
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
89 else
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
90 return QString();
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
91 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
92 QStringList ShellCommand::arguments() const
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
93 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
94 return _arguments;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
95 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
96 bool ShellCommand::isRootCommand() const
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
97 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
98 Q_ASSERT(0); // not implemented yet
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
99 return false;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
100 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
101 bool ShellCommand::isAvailable() const
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
102 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
103 Q_ASSERT(0); // not implemented yet
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
104 return false;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
105 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
106 QStringList ShellCommand::expand(const QStringList& items)
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
107 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
108 QStringList result;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
109
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
110 foreach( const QString &item , items )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
111 result << expand(item);
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
112
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
113 return result;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
114 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
115 QString ShellCommand::expand(const QString& text)
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
116 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
117 QString result = text;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
118 expandEnv(result);
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
119 return result;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
120 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
121
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
122 /*
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
123 * expandEnv
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
124 *
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
125 * Expand environment variables in text. Escaped '$' characters are ignored.
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
126 * Return true if any variables were expanded
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
127 */
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
128 static bool expandEnv( QString &text )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
129 {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
130 // Find all environment variables beginning with '$'
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
131 //
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
132 int pos = 0;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
133
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
134 bool expanded = false;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
135
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
136 while ( (pos = text.indexOf(QLatin1Char('$'), pos)) != -1 ) {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
137
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
138 // Skip escaped '$'
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
139 //
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
140 if ( pos > 0 && text.at(pos-1) == QLatin1Char('\\') ) {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
141 pos++;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
142 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
143 // Variable found => expand
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
144 //
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
145 else {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
146 // Find the end of the variable = next '/' or ' '
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
147 //
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
148 int pos2 = text.indexOf( QLatin1Char(' '), pos+1 );
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
149 int pos_tmp = text.indexOf( QLatin1Char('/'), pos+1 );
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
150
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
151 if ( pos2 == -1 || (pos_tmp != -1 && pos_tmp < pos2) )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
152 pos2 = pos_tmp;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
153
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
154 if ( pos2 == -1 )
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
155 pos2 = text.length();
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
156
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
157 // Replace if the variable is terminated by '/' or ' '
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
158 // and defined
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
159 //
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
160 if ( pos2 >= 0 ) {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
161 int len = pos2 - pos;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
162 QString key = text.mid( pos+1, len-1);
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
163 QString value =
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
164 QString::fromLocal8Bit( qgetenv(key.toLocal8Bit()) );
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
165
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
166 if ( !value.isEmpty() ) {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
167 expanded = true;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
168 text.replace( pos, len, value );
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
169 pos = pos + value.length();
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
170 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
171 else {
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
172 pos = pos2;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
173 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
174 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
175 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
176 }
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
177
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
178 return expanded;
637675470c58 Added OctaveDEs konsole sources.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
179 }