Sophie

Sophie

distrib > Arklinux > devel > x86_64 > by-pkgid > 5b940e974faae500b8be8331a3cc5064 > files > 28

mkinitrd-5.0.17-24ark.src.rpm

#include <QString>
#include <QStringList>
#include <QFile>
#include <QTextStream>

extern "C" {
#include <blkid/blkid.h>
}

int main(int argc, char **argv) {
	QFile fstab("/etc/fstab");
	bool changed=false;
	if(!fstab.open(QFile::ReadOnly)) {
		return 1;
	}
	QStringList newFsTab;
	while(!fstab.atEnd()) {
		QString l=fstab.readLine().trimmed();
		if(l.startsWith('/')) {
			QStringList entry=l.simplified().split(' ');
			char *uuid=blkid_get_tag_value(0, "UUID", entry[0].toLatin1());
			if(uuid && *uuid) {
				changed=true;
				entry.removeFirst();
				l=QString("UUID=") + uuid + "\t" + entry.join("\t");
			}
		}
		newFsTab << l;
	}
	if(changed) {
		fstab.close();
		QFile::rename("/etc/fstab", "/etc/fstab~");
		fstab.setFileName("/etc/fstab");
		if(!fstab.open(QFile::WriteOnly))
			return 2;
		QTextStream ts(&fstab);
		foreach(QString const &l, newFsTab)
			ts << l << endl;
		fstab.close();
		sync();
	}
	return 0;
}