Anzeige:
Ergebnis 1 bis 2 von 2

Thema: eine frage zum verständnis von patchfiles

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.01.2001
    Beiträge
    242

    Question eine frage zum verständnis von patchfiles

    hallo,

    habe hier ein etwas älteres patchfile, bei welchen ich die syntax nicht verstehe und ich kann es nicht mit dem "patch" befehl anwenden.

    Code:
    *** qmail-smtpd.c.dist	Thu Jan  9 00:17:06 1997
    --- qmail-smtpd.c	Thu Jan  9 00:44:49 1997
    ***************
    *** 140,156 ****
         switch(state)
          {
           case 0:
    !        if (ch == '\n') straynewline();
             if (ch == '\r') { state = 4; continue; }
             break;
           case 1: /* \r\n */
    -        if (ch == '\n') straynewline();
             if (ch == '.') { state = 2; continue; }
             if (ch == '\r') { state = 4; continue; }
    !        state = 0;
             break;
           case 2: /* \r\n + . */
    !        if (ch == '\n') straynewline();
             if (ch == '\r') { state = 3; continue; }
             state = 0;
             break;
    --- 140,155 ----
         switch(state)
          {
           case 0:
    !        if (ch == '\n') { state = 1; break; }
             if (ch == '\r') { state = 4; continue; }
             break;
           case 1: /* \r\n */
             if (ch == '.') { state = 2; continue; }
             if (ch == '\r') { state = 4; continue; }
    !        if (ch != '\n') state = 0;
             break;
           case 2: /* \r\n + . */
    !        if (ch == '\n') return;	/* this is what sendmail-8.8.4 does -djg */
             if (ch == '\r') { state = 3; continue; }
             state = 0;
             break;
    und hier die stelle im orginal quelltext:
    Code:
        switch(state) {
          case 0:
            if (ch == '\n') straynewline();
            if (ch == '\r') { state = 4; continue; }
            break;
          case 1: /* \r\n */
            if (ch == '\n') straynewline();
            if (ch == '.') { state = 2; continue; }
            if (ch == '\r') { state = 4; continue; }
            state = 0;
            break;
          case 2: /* \r\n + . */
            if (ch == '\n') straynewline();
            if (ch == '\r') { state = 3; continue; }
            state = 0;
            break;
    sehe ich das richtig, das lt. patchfile, der code nach dem patchen so aussehen sollte:
    Code:
        switch(state) {
          case 0:
            if (ch == '\n') { state = 1; break; }
            if (ch == '\r') { state = 4; continue; }
            break;
          case 1: /* \r\n */
            if (ch == '.') { state = 2; continue; }
            if (ch == '\r') { state = 4; continue; }
            if (ch != '\n') state = 0;
            break;
          case 2: /* \r\n + . */
            if (ch == '\n') return;	/* this is what sendmail-8.8.4 does -djg */
            if (ch == '\r') { state = 3; continue; }
            state = 0;
            break;

    danke

    der tom

  2. #2
    Registrierter Benutzer Avatar von SeeksTheMoon
    Registriert seit
    22.02.2002
    Beiträge
    762
    Patches können verschieden aufgebaut sein: context (unified, old-style, new-style) oder normal. Du musst nachsehen was das ist und wie man das Format mit dem Patch-Kommando benutzt.
    I haven't lost my mind - It's somewhere on a backup-disc

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •