- default:
- break;
-
- case 'l':
- if (argv[op][2] == 't' && !argv[op][3])
- {
- /* lt */
- if (l_is_l)
- l = strlen (argv[op - 1]);
- else
- {
- if (!isint (argv[op - 1], &l))
- integer_expected_error ("before -lt");
- }
-
- if (r_is_l)
- r = strlen (argv[op + 2]);
- else
- {
- if (!isint (argv[op + 1], &r))
- integer_expected_error ("after -lt");
- }
- pos += 3;
- return (TRUE == (l < r));
- }
-
- if (argv[op][2] == 'e' && !argv[op][3])
- {
- /* le */
- if (l_is_l)
- l = strlen (argv[op - 1]);
- else
- {
- if (!isint (argv[op - 1], &l))
- integer_expected_error ("before -le");
- }
- if (r_is_l)
- r = strlen (argv[op + 2]);
- else
- {
- if (!isint (argv[op + 1], &r))
- integer_expected_error ("after -le");
- }
- pos += 3;
- return (TRUE == (l <= r));
- }
- break;
-
- case 'g':
- if (argv[op][2] == 't' && !argv[op][3])
- {
- /* gt integer greater than */
- if (l_is_l)
- l = strlen (argv[op - 1]);
- else
- {
- if (!isint (argv[op - 1], &l))
- integer_expected_error ("before -gt");
- }
- if (r_is_l)
- r = strlen (argv[op + 2]);
- else
- {
- if (!isint (argv[op + 1], &r))
- integer_expected_error ("after -gt");
- }
- pos += 3;
- return (TRUE == (l > r));
- }
-
- if (argv[op][2] == 'e' && !argv[op][3])
- {
- /* ge - integer greater than or equal to */
- if (l_is_l)
- l = strlen (argv[op - 1]);
- else
- {
- if (!isint (argv[op - 1], &l))
- integer_expected_error ("before -ge");
- }
- if (r_is_l)
- r = strlen (argv[op + 2]);
- else
- {
- if (!isint (argv[op + 1], &r))
- integer_expected_error ("after -ge");
- }
- pos += 3;
- return (TRUE == (l >= r));
- }
- break;
-
- case 'n':
- if (argv[op][2] == 't' && !argv[op][3])
- {
- /* nt - newer than */
- pos += 3;
- if (l_is_l || r_is_l)
- test_syntax_error ("-nt does not accept -l\n", (char *)NULL);
- if (age_of (argv[op - 1], &l) && age_of (argv[op + 1], &r))
- return (TRUE == (l > r));
- else
- return (FALSE);
- }
-
- if (argv[op][2] == 'e' && !argv[op][3])
- {
- /* ne - integer not equal */
- if (l_is_l)
- l = strlen (argv[op - 1]);
- else
- {
- if (!isint (argv[op - 1], &l))
- integer_expected_error ("before -ne");
- }
- if (r_is_l)
- r = strlen (argv[op + 2]);
- else
- {
- if (!isint (argv[op + 1], &r))
- integer_expected_error ("after -ne");
- }
- pos += 3;
- return (TRUE == (l != r));
- }
- break;
-
- case 'e':
- if (argv[op][2] == 'q' && !argv[op][3])
- {
- /* eq - integer equal */
- if (l_is_l)
- l = strlen (argv[op - 1]);
- else
- {
- if (!isint (argv[op - 1], &l))
- integer_expected_error ("before -eq");
- }
- if (r_is_l)
- r = strlen (argv[op + 2]);
- else
- {
- if (!isint (argv[op + 1], &r))
- integer_expected_error ("after -eq");
- }
- pos += 3;
- return (TRUE == (l == r));
- }
-
- if (argv[op][2] == 'f' && !argv[op][3])
- {
- /* ef - hard link? */
- pos += 3;
- if (l_is_l || r_is_l)
- test_syntax_error ("-ef does not accept -l\n", (char *)NULL);
- if (test_stat (argv[op - 1], &stat_buf) < 0)
- return (FALSE);
- if (test_stat (argv[op + 1], &stat_spare) < 0)
- return (FALSE);
- return (TRUE ==
- (stat_buf.st_dev == stat_spare.st_dev &&
- stat_buf.st_ino == stat_spare.st_ino));
- }
- break;
-
- case 'o':
- if ('t' == argv[op][2] && '\000' == argv[op][3])
- {
- /* ot - older than */
- pos += 3;
- if (l_is_l || r_is_l)
- test_syntax_error ("-nt does not accept -l\n", (char *)NULL);
- if (age_of (argv[op - 1], &l) && age_of (argv[op + 1], &r))
- return (TRUE == (l < r));
- return (FALSE);
- }
- break;