#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; }