This file is indexed.

/usr/share/doc/libnjb-doc/examples/play.c is in libnjb-doc 2.2.7~dfsg0-4.

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
#include "common.h"
#include <signal.h>

int repeat= 1;

void stopplay (int signo);
void hhmmss (u_int16_t seconds, u_int16_t *hh, u_int16_t *mm, u_int16_t *ss);
void usage (void);

int main (int argc, char **argv)
{
	njb_t njbs[NJB_MAX_DEVICES], *njb;
	int i, n, status, change, opt, debug;
	u_int16_t sec, hh, mm, ss;
	u_int32_t trackid;
	extern char *optarg;
	extern int optind;

	debug= 0;

	while ( (opt= getopt(argc, argv, "D:")) != -1 ) {
		switch (opt) {
		case 'D':
			debug= atoi(optarg);
			break;
		default:
			break;
		}
	}
	argc-= optind;
	argv+= optind;

	if ( ! argc ) usage();

	if ( debug ) NJB_Set_Debug(debug);

	signal(SIGINT, stopplay);

	if (NJB_Discover(njbs, 0, &n) == -1) {
	  fprintf(stderr, "could not locate any jukeboxes\n");
	  return 1;
	}

	if ( n == 0 ) {
		fprintf(stderr, "no NJB devices found\n");
		return 0;
	} 

	njb= njbs;

	if ( NJB_Open(njb) == -1 ) {
		NJB_Error_Dump(njb,stderr);
		return 1;
	}

	if ( NJB_Capture(njb) == -1 ) {
		NJB_Error_Dump(njb,stderr);
		return 1;
	}

	for (i= 0; i< argc; i++) {
		trackid= strtoul(argv[i], NULL, 10);

		if ( i == 0 ) {
			status= NJB_Play_Track(njb, trackid);
		} else {
			status= NJB_Queue_Track(njb, trackid);
		}

		if ( status == -1 ) NJB_Error_Dump(njb,stderr);
	}

	printf("---> Hit ^C to exit <---\n");

	change= 0;
	i= 0;
	printf("Track ID %10.10s: 00:00:00\b\b\b\b\b\b\b", argv[i]);
	fflush(stdout);
	while ( repeat ) {
		if ( change ) {
			i++;
			if ( i == argc ) {
				repeat= 0;
			} else {
				printf("\rTrack ID %10.10s: 00:00:00\b\b\b\b\b\b\b",
					argv[i]);
				fflush(stdout);
			}
			change= 0;
		} else
			NJB_Elapsed_Time(njb, &sec, &change);
		hhmmss(sec, &hh, &mm, &ss);
		printf("%02u:%02u:%02u\b\b\b\b\b\b\b\b", hh, mm, ss);
		fflush(stdout);

		sleep(1);
	}
	printf("\n");

	NJB_Stop_Play(njb);

	NJB_Release(njb);

	NJB_Close(njb);
	return 0;
}

void stopplay (int signo)
{
	repeat= 0;
}

void hhmmss (u_int16_t seconds, u_int16_t *hh, u_int16_t *mm, u_int16_t *ss)
{
	if ( seconds >= 3600 ) *hh= seconds/3600;
	seconds-= 3600*(*hh);
	if ( seconds >= 60 ) *mm= seconds/60;
	*ss= seconds-(60*(*mm));
}

void usage (void) {
	fprintf(stderr, "usage: play [ -D debuglvl ] <trackid> ...\n");
	exit(1);
}