Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

title aus menu.lst(grub) in C?

Alles rund um die verschiedenen Konsolen und shells sowie die Programmierung unter Linux

Moderator: Moderatoren

Antworten
Benutzeravatar
Appleonkel
Hacker
Hacker
Beiträge: 794
Registriert: 30. Apr 2004, 12:02
Wohnort: Köln
Kontaktdaten:

title aus menu.lst(grub) in C?

Beitrag von Appleonkel »

Ich moechte die title aus der /boot/grub/menu.lst lesen und in Variablen speichern.

So habe ich mir das vorgestellt.

Code: Alles auswählen

---schnipp--
fz = fopen(dateiname, "r");
     if (fz == NULL)
          printf("!!!Datei '%s' kann nicht zum lesen geoeffnet werden\n", dateiname);
     else {
          printf(".... Datei '%s' wurde zum lesen geoeffnet\n", dateiname);
               while ( (zeich = fgetc(fz)) != EOF) { /*Zeichen aus Datei lesen */
                      if (zeich == 'title') 
                          zeich = title;
               }
     }
fclose(fz);
printf("..... und wieder geschlossen\n");
---schnipp---
So oder so aehnlich stell ich mir das vor, mein Problem ist das ich nur den Wert hinter title haben moechte(also den Titel :D) und jeder title in einer neuen Varibale steht, ohne vorher zu wissen wie viele title es in der menu.lst gibt.

mfg Appleonkel
"Es gibt anscheinend keine Möglichkeit der Sonde zu antworten." – "Ja, es ist schwierig zu antworten, wenn man die Frage nicht versteht." Star Trek 4
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

über die Datei itereieren (while ! eof)

Zeilenweise lesen (fgets)

wenn beginnt mit title -> rest abspeichern + speichern sonst weiterlesen

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Benutzeravatar
Appleonkel
Hacker
Hacker
Beiträge: 794
Registriert: 30. Apr 2004, 12:02
Wohnort: Köln
Kontaktdaten:

Beitrag von Appleonkel »

Habe es jetzt so:

Code: Alles auswählen

while (feof(fz) == 0) { 
     fgets(zeich1, 80, fz);
     if (zeich1[0] != 't')
          continue;
}
Leider fängt "timeout" auch mit 't' an. Wie bekomme ich das noch raus?
Und wie ich die Titel in verschiedene Variablen damit? Immerhin steht 'title' ja so noch davor.

thx Appleonkel
"Es gibt anscheinend keine Möglichkeit der Sonde zu antworten." – "Ja, es ist schwierig zu antworten, wenn man die Frage nicht versteht." Star Trek 4
Benutzeravatar
TeXpert
Guru
Guru
Beiträge: 2166
Registriert: 17. Jan 2005, 11:22

Beitrag von TeXpert »

indem Du die richtigen Vergleichsfunktionen nutzt. (strncmp)

Code: Alles auswählen

#include <stdio.h>
#include <string.h>

int main() {

 FILE *fp;
 fp = fopen("/boot/grub/menu.lst","r");
 char line[255];
 int count=255;	
 int linecount = 0;
 if (fp) {		
    printf("Datei offen\n");
    while (fgets(line, count, fp) != 0) {
	linecount++;
    	if (strncmp("title", line, 5) == 0) {
	    printf("Line: %d - %s", linecount, line);
	}
    }
    fclose(fp);
 }
 else {
    printf("fehler beim Öffnen\n");
 }
}
weiterhin wäre hier nochmal ein Blick in die grub-manpage angebracht, muss es title sein, oder ist auch Title möglich?... -> substr und dann toupper, tolower

Code: Alles auswählen

# to resolve all your problems, try this:
HOWTO='pack c5,41*2,sqrt 7056,unpack(c,H)-2,oct 115' && perl -le "print $HOWTO"
Ich beantworte keine Supportfragen per PM!
Antworten