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