Download/SVN: subversion-keyword-alias.patch

File subversion-keyword-alias.patch, 5.4 kB (added by verm, 3 years ago)

subversion 1.3.0 keyword alias patch

  • subversion/libsvn_subr/subst.c

    old new  
    372372  for (i = 0; i < keyword_tokens->nelts; ++i) 
    373373    { 
    374374      const char *keyword = APR_ARRAY_IDX (keyword_tokens, i, const char *); 
     375      const char *eq; 
     376      char *realkeyword; 
    375377 
     378      eq = strchr(keyword, '='); 
     379      if (eq != NULL) 
     380        { 
     381          realkeyword = apr_pstrmemdup(pool, keyword, eq - keyword); 
     382          keyword = eq + 1; 
     383        } 
     384      else 
     385        { 
     386          realkeyword = NULL; 
     387        } 
    376388      if ((! strcmp (keyword, SVN_KEYWORD_REVISION_LONG)) 
    377389          || (! strcmp (keyword, SVN_KEYWORD_REVISION_MEDIUM)) 
    378390          || (! strcasecmp (keyword, SVN_KEYWORD_REVISION_SHORT))) 
     
    380392          svn_string_t *revision_val; 
    381393 
    382394          revision_val = keyword_printf ("%r", rev, url, date, author, pool); 
    383           apr_hash_set (*kw, SVN_KEYWORD_REVISION_LONG, 
    384                         APR_HASH_KEY_STRING, revision_val); 
    385           apr_hash_set (*kw, SVN_KEYWORD_REVISION_MEDIUM, 
    386                         APR_HASH_KEY_STRING, revision_val); 
    387           apr_hash_set (*kw, SVN_KEYWORD_REVISION_SHORT, 
    388                         APR_HASH_KEY_STRING, revision_val); 
     395          if (realkeyword == NULL) 
     396            { 
     397              apr_hash_set (*kw, SVN_KEYWORD_REVISION_LONG, 
     398                            APR_HASH_KEY_STRING, revision_val); 
     399              apr_hash_set (*kw, SVN_KEYWORD_REVISION_MEDIUM, 
     400                            APR_HASH_KEY_STRING, revision_val); 
     401              apr_hash_set (*kw, SVN_KEYWORD_REVISION_SHORT, 
     402                            APR_HASH_KEY_STRING, revision_val); 
     403            } 
     404          else 
     405            { 
     406              apr_hash_set (*kw, realkeyword, 
     407                            APR_HASH_KEY_STRING, revision_val); 
     408            } 
    389409        } 
    390410      else if ((! strcmp (keyword, SVN_KEYWORD_DATE_LONG)) 
    391411               || (! strcasecmp (keyword, SVN_KEYWORD_DATE_SHORT))) 
     
    393413          svn_string_t *date_val; 
    394414 
    395415          date_val = keyword_printf ("%D", rev, url, date, author, pool); 
    396           apr_hash_set (*kw, SVN_KEYWORD_DATE_LONG, 
    397                         APR_HASH_KEY_STRING, date_val); 
    398           apr_hash_set (*kw, SVN_KEYWORD_DATE_SHORT, 
    399                         APR_HASH_KEY_STRING, date_val); 
     416          if (realkeyword == NULL) 
     417            { 
     418              apr_hash_set (*kw, SVN_KEYWORD_DATE_LONG, 
     419                            APR_HASH_KEY_STRING, date_val); 
     420              apr_hash_set (*kw, SVN_KEYWORD_DATE_SHORT, 
     421                            APR_HASH_KEY_STRING, date_val); 
     422            } 
     423          else 
     424            { 
     425              apr_hash_set (*kw, realkeyword, 
     426                            APR_HASH_KEY_STRING, date_val); 
     427            } 
    400428        } 
    401429      else if ((! strcmp (keyword, SVN_KEYWORD_AUTHOR_LONG)) 
    402430               || (! strcasecmp (keyword, SVN_KEYWORD_AUTHOR_SHORT))) 
     
    404432          svn_string_t *author_val; 
    405433 
    406434          author_val = keyword_printf ("%a", rev, url, date, author, pool); 
    407           apr_hash_set (*kw, SVN_KEYWORD_AUTHOR_LONG, 
    408                         APR_HASH_KEY_STRING, author_val); 
    409           apr_hash_set (*kw, SVN_KEYWORD_AUTHOR_SHORT, 
    410                         APR_HASH_KEY_STRING, author_val); 
     435          if (realkeyword == NULL) 
     436            { 
     437              apr_hash_set (*kw, SVN_KEYWORD_AUTHOR_LONG, 
     438                            APR_HASH_KEY_STRING, author_val); 
     439              apr_hash_set (*kw, SVN_KEYWORD_AUTHOR_SHORT, 
     440                            APR_HASH_KEY_STRING, author_val); 
     441            } 
     442          else 
     443            { 
     444              apr_hash_set (*kw, realkeyword, 
     445                            APR_HASH_KEY_STRING, author_val); 
     446            } 
    411447        } 
    412448      else if ((! strcmp (keyword, SVN_KEYWORD_URL_LONG)) 
    413449               || (! strcasecmp (keyword, SVN_KEYWORD_URL_SHORT))) 
     
    415451          svn_string_t *url_val; 
    416452 
    417453          url_val = keyword_printf ("%u", rev, url, date, author, pool); 
    418           apr_hash_set (*kw, SVN_KEYWORD_URL_LONG, 
    419                         APR_HASH_KEY_STRING, url_val); 
    420           apr_hash_set (*kw, SVN_KEYWORD_URL_SHORT, 
    421                         APR_HASH_KEY_STRING, url_val); 
     454          if (realkeyword == NULL) 
     455            { 
     456              apr_hash_set (*kw, SVN_KEYWORD_URL_LONG, 
     457                            APR_HASH_KEY_STRING, url_val); 
     458              apr_hash_set (*kw, SVN_KEYWORD_URL_SHORT, 
     459                            APR_HASH_KEY_STRING, url_val); 
     460            } 
     461          else 
     462            { 
     463              apr_hash_set (*kw, realkeyword, 
     464                            APR_HASH_KEY_STRING, url_val); 
     465            } 
    422466        } 
    423467      else if ((! strcasecmp (keyword, SVN_KEYWORD_ID))) 
    424468        { 
     
    426470 
    427471          id_val = keyword_printf ("%b %r %d %a", rev, url, date, author, 
    428472                                   pool); 
    429           apr_hash_set (*kw, SVN_KEYWORD_ID, 
    430                         APR_HASH_KEY_STRING, id_val); 
     473          if (realkeyword == NULL) 
     474            { 
     475              apr_hash_set (*kw, SVN_KEYWORD_ID, 
     476                            APR_HASH_KEY_STRING, id_val); 
     477            } 
     478          else 
     479            { 
     480              apr_hash_set (*kw, realkeyword, 
     481                            APR_HASH_KEY_STRING, id_val); 
     482            } 
    431483        } 
    432484    }