QString --> octal
QString --> octal
Hallo
Ich schreibe hier in der Hoffnung, dass mir jemand helfen kann, bin echt am verzweifeln...
Ich versuche mit Hilfe von
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
verzeichnisse zu erstellen. Das funktioniert auch wunderbar, solange ich die Rechte (mode_t) hardcoded übergebe. Jedoch wird in meinem Programm dieser Wert als QString übergeben und ein casten in int lässt dann auch das führende 0 verschwinden. Ohne führendes 0 wird aber der Wert falsch intepretiert.
z.B. aus 0755 wird dann 755.
Strings werden natürlich als Parameter nicht akzeptiert.
OS: Fedora Core 5
Dev: QT 3.3
Wenn jemand einen Tipp für mich hat, dann wäre ich echt dankbar!
Gruss
madmadmod
Ich schreibe hier in der Hoffnung, dass mir jemand helfen kann, bin echt am verzweifeln...
Ich versuche mit Hilfe von
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
verzeichnisse zu erstellen. Das funktioniert auch wunderbar, solange ich die Rechte (mode_t) hardcoded übergebe. Jedoch wird in meinem Programm dieser Wert als QString übergeben und ein casten in int lässt dann auch das führende 0 verschwinden. Ohne führendes 0 wird aber der Wert falsch intepretiert.
z.B. aus 0755 wird dann 755.
Strings werden natürlich als Parameter nicht akzeptiert.
OS: Fedora Core 5
Dev: QT 3.3
Wenn jemand einen Tipp für mich hat, dann wäre ich echt dankbar!
Gruss
madmadmod
Re: QString --> octal
Du denkst einfach mit linux/mac .... und nicht mit allen os....madmadmod hat geschrieben:Hallo
Ich schreibe hier in der Hoffnung, dass mir jemand helfen kann, bin echt am verzweifeln...
Ich versuche mit Hilfe von
#include <sys/stat.h>
#include <sys/types.h>
int mkdir(const char *pathname, mode_t mode);
verzeichnisse zu erstellen. Das funktioniert auch wunderbar, solange ich die Rechte (mode_t) hardcoded übergebe. Jedoch wird in meinem
z.B. aus 0755 wird dann 755.
Gruss
madmadmod
wenn du mit http://doc.trolltech.com/4.1/qdir.html#mkdir deine ordner anlegst...
Musst du nor noch mit ... hinterher laufen mit
#if defined Q_WS_X11
#if defined Q_WS_MAC
..... mit qprocess den richtigen chmod / chown uebergeben..
mit window nicht noetig da alles 0777 ist...
mit qprocess geht ein
#define chownfull 0777
nicht verloren ... eben getestet...
Zuletzt geändert von patrik08 am 5. Juni 2006 10:31, insgesamt 1-mal geändert.
was schreibs du denn ein mailserver oder webserver...
wenn der benutzer schreibt sind die ordner sowieso seine...
ausser du schreibst eben ein server ..... der als user , nobody , oder root lauft...
lese auch ... http://www.qtcentre.org/forum/showthrea ... ight=octal
wenn der benutzer schreibt sind die ordner sowieso seine...
ausser du schreibst eben ein server ..... der als user , nobody , oder root lauft...
lese auch ... http://www.qtcentre.org/forum/showthrea ... ight=octal
ich schreibe ein image-tool. also ein tool um abbilder von ext2/ext3 datenträgern zu machen, dabei können dateien excluded, verschlüsselt und kopmprimiert werden.
habe mich jetzt übrigens doch für qprocess entschieden, ist gar ned so langsam wie ich dachte. und vor allem EINFACH ZU IMPLEMENTIEREN!!!!
habe mich jetzt übrigens doch für qprocess entschieden, ist gar ned so langsam wie ich dachte. und vor allem EINFACH ZU IMPLEMENTIEREN!!!!
Dann kannst du praktisch nur ueber qprocess gehen... (ausser du schreibst dd neu!)madmadmod hat geschrieben:ich schreibe ein image-tool. also ein tool um abbilder von ext2/ext3 datenträgern zu machen, dabei können dateien excluded, verschlüsselt und kopmprimiert werden.
dd ist wohl auf jedem linux drauf....
http://linux.about.com/od/commands/l/blcmdl1_dd.htm
qprocess lese auch http://www.qtforum.de/forum/viewtopic.p ... t=qprocess
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
also wenn ich das so mache:
bekomme ich trotzdem 755 und nicht 0755 nach dem konvertieren. mache ich was falsch?
Code: Alles auswählen
void cfileoperation::createdir(QString dirname, QString r)
{
r.prepend("0");
bool ok;
cout<<r<<endl;
cout<<r.toULong(&ok,10)<<endl;
;}
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
mode_t ist eben mode_t und nicht QString.
Code: Alles auswählen
cfileoperation.cpp: In member function »void cfileoperation::createdir(QString, QString)«:
cfileoperation.cpp:99: Fehler: ungültige Umwandlung von »const char*« in »__mode_t«
cfileoperation.cpp:99: Fehler: Argument 2 von »int mkdir(const char*, __mode_t)« wird initialisiert