1 /****************************************************************************
3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4 ** All rights reserved.
5 ** Contact: Nokia Corporation (qt-info@nokia.com)
7 ** This file is part of the qt3to4 porting application of the Qt Toolkit.
9 ** $QT_BEGIN_LICENSE:LGPL$
10 ** No Commercial Usage
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
16 ** GNU Lesser General Public License Usage
17 ** Alternatively, this file may be used under the terms of the GNU Lesser
18 ** General Public License version 2.1 as published by the Free Software
19 ** Foundation and appearing in the file LICENSE.LGPL included in the
20 ** packaging of this file. Please review the following information to
21 ** ensure the GNU Lesser General Public License version 2.1 requirements
22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
24 ** In addition, as a special exception, Nokia gives you certain additional
25 ** rights. These rights are described in the Nokia Qt LGPL Exception
26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
40 ****************************************************************************/
42 #include "filewriter.h"
51 FileWriter
*FileWriter::theInstance
= 0;
53 FileWriter
*FileWriter::instance()
56 theInstance
= new FileWriter();
61 void FileWriter::deleteInstance()
69 FileWriter::FileWriter(OverWriteFiles overWrite
, QString overwriteMsg
)
70 :overWriteFiles(overWrite
)
71 ,overwriteMessage(overwriteMsg
)
73 if(overwriteMessage
.isEmpty())
74 overwriteMessage
= QLatin1String("Convert file ");
77 FileWriter::WriteResult
FileWriter::writeFileVerbously(QString filePath
, QByteArray contents
)
79 const WriteResult result
= writeFile(filePath
, contents
);
80 if (result
== WriteSucceeded
) {
81 QString cleanPath
= QDir::cleanPath(filePath
);
82 printf("Wrote to file: %s \n", QDir::toNativeSeparators(cleanPath
).toLocal8Bit().constData());
87 FileWriter::WriteResult
FileWriter::writeFile(QString filePath
, QByteArray contents
)
89 if(filePath
.isEmpty())
91 QString path
= QFileInfo(filePath
).path();
92 if (!QDir().mkpath(path
)){
93 printf("Error creating path %s \n", QDir::toNativeSeparators(path
).toLocal8Bit().constData());
96 QString cleanPath
= QDir::cleanPath(filePath
);
99 if (overWriteFiles
== DontOverWrite
) {
100 printf("Error writing file %s: It already exists \n",
101 QDir::toNativeSeparators(cleanPath
).toLatin1().constData());
103 } else if(overWriteFiles
== AskOnOverWrite
) {
104 printf("%s%s? (Y)es, (N)o, (A)ll ", overwriteMessage
.toLatin1().constData(),
105 QDir::toNativeSeparators(cleanPath
).toLatin1().constData());
108 while (answer
!= 'y' && answer
!= 'n' && answer
!= 'a') {
109 #if defined(Q_OS_WIN) && defined(_MSC_VER) && _MSC_VER >= 1400
110 int result
= scanf_s("%c", &answer
);
112 int result
= scanf("%c", &answer
);
115 answer
= tolower(answer
);
116 else if (EOF
== result
) {
117 if (EINTR
== errno
|| EILSEQ
== errno
)
126 else if(answer
== 'a')
127 overWriteFiles
=AlwaysOverWrite
;
131 f
.open(QFile::WriteOnly
);
132 if (f
.isOpen() && f
.write(contents
) == contents
.size())
133 return WriteSucceeded
;
135 printf("Could not write to to file: %s. Is it write protected?\n",
136 QDir::toNativeSeparators(filePath
).toLatin1().constData());
142 Sets the write mode for the file writer. writeMode is one of
143 DontOverWrite, AlwaysOverWrite, AskOnOverWrite.
145 void FileWriter::setOverwriteFiles(OverWriteFiles writeMode
)
147 overWriteFiles
= writeMode
;
150 QByteArray
detectLineEndings(const QByteArray
&array
)
152 if (array
.contains("\r\n")) {