13aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev/**
23aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * \file trexist.c
33aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * Example program to check if a certain track exists on the device.
43aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev *
53aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * Copyright (C) 2006 The libmtp development team.
63aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev *
73aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * This library is free software; you can redistribute it and/or
83aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * modify it under the terms of the GNU Lesser General Public
93aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * License as published by the Free Software Foundation; either
103aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * version 2 of the License, or (at your option) any later version.
113aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev *
123aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * This library is distributed in the hope that it will be useful,
133aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * but WITHOUT ANY WARRANTY; without even the implied warranty of
143aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
153aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * Lesser General Public License for more details.
163aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev *
173aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * You should have received a copy of the GNU Lesser General Public
183aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * License along with this library; if not, write to the
193aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
203aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev * Boston, MA 02111-1307, USA.
213aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev */
223aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include "common.h"
233aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <stdlib.h>
243aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev#include <limits.h>
253aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
263aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevstatic void usage (void)
273aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
283aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fprintf(stderr, "trexist <trackid>\n");
293aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
303aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
313aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishevint main (int argc, char **argv)
323aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev{
333aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LIBMTP_mtpdevice_t *device;
343aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  uint32_t id;
353aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  char *endptr;
363aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
373aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  fprintf(stdout, "libmtp version: " LIBMTP_VERSION_STRING "\n\n");
383aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
393aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  // We need track ID
403aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if ( argc != 2 ) {
413aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    usage();
423aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return 1;
433aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  }
443aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
453aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  // Sanity check song ID
463aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  id = strtoul(argv[1], &endptr, 10);
473aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if ( *endptr != 0 ) {
483aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fprintf(stderr, "illegal value %s\n", argv[1]);
493aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return 1;
503aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  } else if ( ! id ) {
513aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    fprintf(stderr, "bad song id %u\n", id);
523aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    return 1;
533aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  }
543aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
553aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LIBMTP_Init();
563aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  device = LIBMTP_Get_First_Device();
573aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  if (device == NULL) {
583aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    printf("No devices. Connect/replug device and try again.\n");
593aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev    exit (0);
603aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  }
613aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
623aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  printf("%s\n", LIBMTP_Track_Exists(device, id) ? "Yes" : "No");
633aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
643aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  LIBMTP_Release_Device(device);
653aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  printf("OK.\n");
663aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev  exit (0);
673aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev}
683aa430dc5437a98734b36f996f9b17081a589143Yavor Goulishev
69