~thopiekar/zypper/libsolv

« back to all changes in this revision

Viewing changes to src/selection.c

  • Committer: Michael Schroeder
  • Date: 2017-11-20 14:15:23 UTC
  • Revision ID: git-v1:b5d0451c757b16fe2f8b0a9aef21608e42b14e07
Fix selection_canon when there's a zero epoch provided

Also add tests.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1034
1034
 
1035
1035
/* magic epoch promotion code, works only for SELECTION_NAME selections */
1036
1036
static void
1037
 
selection_filter_evr(Pool *pool, Queue *selection, char *evr)
 
1037
selection_filter_evr(Pool *pool, Queue *selection, const char *evr)
1038
1038
{
1039
1039
  int i, j;
1040
1040
  Queue q;
1041
1041
  Id qbuf[10];
 
1042
  const char *sp;
 
1043
 
 
1044
  /* do we already have an epoch? */
 
1045
  for (sp = evr; *sp >= '0' && *sp <= '9'; sp++)
 
1046
    ;
 
1047
  if (*sp == ':' && sp != evr)
 
1048
    {
 
1049
      /* yes, just add the rel filter */
 
1050
      selection_filter_rel(pool, selection, REL_EQ, pool_str2id(pool, evr, 1));
 
1051
      return;
 
1052
    }
1042
1053
 
1043
1054
  queue_init(&q);
1044
1055
  queue_init_buffer(&q, qbuf, sizeof(qbuf)/sizeof(*qbuf));
1055
1066
        {
1056
1067
          Solvable *s = pool->solvables + p;
1057
1068
          const char *sevr = pool_id2str(pool, s->evr);
1058
 
          const char *sp;
1059
1069
          for (sp = sevr; *sp >= '0' && *sp <= '9'; sp++)
1060
1070
            ;
1061
1071
          if (*sp != ':')