This file is indexed.

/usr/share/syncevolution/xml/datatypes/server/44email-nokia9500.xml is in syncevolution-common 1.4-1ubuntu4.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
    <datatype name="email_nokia9500" basetype="text">
      <use profile="rfc2822_email"/>
      <typestring>message/x-rfc822</typestring> <!-- this is Nokia 9500/9300-like -->
      <versionstring>1.0</versionstring>

      <initscript><![CDATA[
        INTEGER ITEMLIMIT;
        // default limit is limit of session
        ITEMLIMIT = SIZELIMIT();
      ]]></initscript>

      <processitemscript><![CDATA[
        INTEGER n;

        // For Nokia Email, we must derive folder ID from source LocURI
        // which has form "./somestrangenumber/folder/itemid"
        // where folder can be "Inbox" or "Outbox"
        if (FIND(REMOTEID(),"Inbox",0)!=UNASSIGNED) {
          FOLDER="INBOX";
        }
        else if (FIND(REMOTEID(),"Outbox",0)!=UNASSIGNED) {
          FOLDER="OUTBOX";
        }
        // pre-process item
        if (UPPERCASE(FOLDER)=="INBOX") {
          // In any case, prevent adding to inbox (delete remote items instead)
          PREVENTADD();
          // server always wins for inbox
          CONFLICTSTRATEGY("server-wins");
          if (SLOWSYNC()) {
            // also prevent modifications in server
            IGNOREUPDATE();
          }
          else {
            // normal sync items going to inbox from client need special treatment
            if (SYNCOP()=="add" || SYNCOP()=="replace") {
              // make sure that existing server item will conflict with this item
              if (LIMIT!=EMPTY && (LIMIT<0 || LIMIT>SIZELIMIT())) {
                // force conflict only if this is a reload
                FORCECONFLICT();
              }
              // make sure we never overwrite a body in the inbox
              BODY = UNASSIGNED;
              // delete always wins over replace in inbox (to avoid adds to inbox)
              DELETEWINS();
            }
          }
        }
        else if (UPPERCASE(FOLDER)=="OUTBOX") {
          // never try to change something in outbox
          IGNOREUPDATE();
          if (SYNCOP()!="delete") {
            // - date of mail is NOW, set it such that a correct date is written to the DB
            MAILDATE = DBNOW();
            // MAILDATE = (INTEGER)DBNOW() - TIMEUNITS(120); // %%% backdate it 2 mins to make sure it does not get retransmitted
            // - echo item as delete (this causes that it is moved to the "sent" folder in the 9500)
            ECHOITEM("delete");
          }
          CONFLICTSTRATEGY("client-wins");
        }
        else {
          // Other folder
          // - silently discard incoming item for other folder than the above
          //   except if it is a delete
          if (SYNCOP()!="delete")
            REJECTITEM(0);
        }
      ]]></processitemscript>


      <mergescript><![CDATA[
        // pre-process item
        if (UPPERCASE(LOOSING.FOLDER)!="OUTBOX") {
          // non-outbox (especially inbox) needs special merge to accomplish reload feature
          // - loosing item is client's, winning is server's
          if (LOOSING.LIMIT!=EMPTY) {
            // loosing (remote) item specifies a new limit, override winning's default
            WINNING.LIMIT=LOOSING.LIMIT;
            SETWINNINGCHANGED(TRUE);
          }
          // make sure winning has right folder
          WINNING.FOLDER=LOOSING.FOLDER;
          // make sure a set read-flag gets propagated to server
          if (LOOSING.ISREAD=="true") WINNING.ISREAD="true";
          // merge other fields normally
          MERGEFIELDS();
          // make sure body does not get re-written to local DB even if merge would cause local update
          LOOSING.BODY=UNASSIGNED;
        }
        else {
          // normal merging in other folders
          MERGEFIELDS();
        }
      ]]></mergescript>


      <outgoingscript><![CDATA[
        // we can only send to inbox or outbox
        // - If we have no remote ID (=add command) prepare special Target item ID
        //   containing target folder.
        if (REMOTEID()==EMPTY) {
        if (UPPERCASE(FOLDER)=="INBOX") {
            SETREMOTEID(REMOTEDBNAME()+"/Inbox/");
        }
        else if (UPPERCASE(FOLDER)=="OUTBOX") {
            SETREMOTEID(REMOTEDBNAME()+"/Outbox/");
          }
        }
      ]]></outgoingscript>

      <filterinitscript><![CDATA[
        // check if we need to filter
        INTEGER NEEDFILTER;

        NEEDFILTER =
          !DBHANDLESOPTS() && // only if DB cannot handle it
          (STARTDATE()!=EMPTY); // and only if a start date is set (end date not needed as there are never future emails today)
        SETFILTERALL(NEEDFILTER);
        RETURN NEEDFILTER;
      ]]></filterinitscript>


      <filterscript><![CDATA[
        INTEGER PASSES;

        // check if item passes filter
        PASSES=FALSE;
        // Filter out anything not for Inbox or Outbox
        if (UPPERCASE(FOLDER)!="INBOX" && UPPERCASE(FOLDER)!="OUTBOX") RETURN FALSE;
        // Emails pass if they have a MAILDATE on or later than start date
        PASSES = MAILDATE>=STARTDATE();
        RETURN PASSES;
      ]]></filterscript>

    </datatype>