Пример #1
0
/* Parameters:
   library: Pointer to Start of Library Array
   song_name: Artist of song
*/
void search_song_artist(struct song_node* *library, char *song_artist)
{
  if (find_song_by_artist( library[ letter_to_index(song_artist) ], song_artist ) )
  {
    printf("First Song Fond: ");
    print_song( find_song_by_artist( library[ letter_to_index(song_artist) ], song_artist) );
  }
  else
    printf ("Artist Not Found\n");
}
Пример #2
0
/* Parameter:
   library: Pointer to Start of Library Array
   artist: Artist to Print
*/
void print_artist_songs(struct song_node* *library, char* song_artist)
{
  struct song_node* head = library[ letter_to_index(song_artist) ];
  int counter = 0;

  while(head)
  {
    if (! strcmp( head->artist, song_artist ))
    {
      print_song(head);
      counter++;
    }

    head = head->next;
  }

  if (! counter)
    printf("No Songs by this Artist Found.\n");
}
/* This function produces a mask for each drive letter that isn't
 * currently used. Each bit of the long result represents a letter,
 * with A being the least significant bit, and Z being the most
 * significant.
 *
 * To calculate this, we loop over each letter, and see if we can get
 * a drive entry for it. If so, we set the appropriate bit. At the
 * end, we flip each bit, to give the desired result.
 *
 * The letter parameter is always marked as being available. This is
 * so the edit dialog can display the currently used drive letter
 * alongside the available ones.
 */
ULONG drive_available_mask(char letter)
{
  ULONG result = 0;
  int i;

  WINE_TRACE("\n");


  for(i = 0; i < 26; i++)
  {
      if (!drives[i].in_use) continue;
      result |= (1 << (letter_to_index(drives[i].letter)));
  }

  result = ~result;
  if (letter) result |= DRIVE_MASK_BIT(letter);

  WINE_TRACE("finished drive letter loop with %x\n", result);
  return result;
}
BOOL add_drive(char letter, const char *targetpath, const char *device, const WCHAR *label,
               DWORD serial, DWORD type)
{
    int driveIndex = letter_to_index(letter);

    if(drives[driveIndex].in_use)
        return FALSE;

    WINE_TRACE("letter == '%c', unixpath == %s, device == %s, label == %s, serial == %08x, type == %d\n",
               letter, wine_dbgstr_a(targetpath), wine_dbgstr_a(device),
               wine_dbgstr_w(label), serial, type);

    drives[driveIndex].letter   = toupper(letter);
    drives[driveIndex].unixpath = targetpath ? strdupA(targetpath) : NULL;
    drives[driveIndex].device   = device ? strdupA(device) : NULL;
    drives[driveIndex].label    = label ? strdupW(label) : NULL;
    drives[driveIndex].serial   = serial;
    drives[driveIndex].type     = type;
    drives[driveIndex].in_use   = TRUE;
    drives[driveIndex].modified = TRUE;

    return TRUE;
}
Пример #5
0
/* Parameters:
   library: Pointer to Start of Library Array
   song_artist: Song Artist
   song_name: Song Name
*/
void delete_song_from_library(struct song_node* *library, char *song_artist, char *song_name)
{
  library[ letter_to_index(song_artist) ] = delete_song( library[letter_to_index(song_artist)], song_artist, song_name);
}
Пример #6
0
/* Paramter:
   library; Pointer to STart of Library Array
   letter: Letter to Print Songs
*/
void print_letter_songs(struct song_node* *library, char letter)
{
  print_list( library[ letter_to_index((char *) &letter) ] );
}
Пример #7
0
/* Parameters
   library: Pointer to start of library array
   song_artist: Song Artist
   song_name: Song Name
*/
void add_song(struct song_node* *library, char *song_artist, char *song_name)
{
  library[ letter_to_index(song_artist) ] = insert_in_order( library[ letter_to_index(song_artist) ], song_artist, song_name );
}