summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--gammu/emb/gammu/gammu.c4
-rw-r--r--gammu/gammu.tar.bz2bin612042 -> 0 bytes
2 files changed, 2 insertions, 2 deletions
diff --git a/gammu/emb/gammu/gammu.c b/gammu/emb/gammu/gammu.c
index f49ae36..c436b90 100644
--- a/gammu/emb/gammu/gammu.c
+++ b/gammu/emb/gammu/gammu.c
@@ -4586,385 +4586,385 @@ static void Backup(int argc, char *argv[])
4586 *Backup.FMStation[used]=FMStation; 4586 *Backup.FMStation[used]=FMStation;
4587 used++; 4587 used++;
4588 } 4588 }
4589 i++; 4589 i++;
4590 FMStation.Location = i; 4590 FMStation.Location = i;
4591 printmsgerr("*"); 4591 printmsgerr("*");
4592 } 4592 }
4593 printmsgerr("\n"); 4593 printmsgerr("\n");
4594 } 4594 }
4595 DoBackup = false; 4595 DoBackup = false;
4596 if (Info.GPRSPoint) { 4596 if (Info.GPRSPoint) {
4597 printmsg("Checking GPRS access points\n"); 4597 printmsg("Checking GPRS access points\n");
4598 GPRSPoint.Location = 1; 4598 GPRSPoint.Location = 1;
4599 error = Phone->GetGPRSAccessPoint(&s,&GPRSPoint); 4599 error = Phone->GetGPRSAccessPoint(&s,&GPRSPoint);
4600 if (error == ERR_NONE || error == ERR_EMPTY) { 4600 if (error == ERR_NONE || error == ERR_EMPTY) {
4601 if (answer_yes(" Backup GPRS access points")) DoBackup = true; 4601 if (answer_yes(" Backup GPRS access points")) DoBackup = true;
4602 } 4602 }
4603 } 4603 }
4604 if (DoBackup) { 4604 if (DoBackup) {
4605 used= 0; 4605 used= 0;
4606 i = 1; 4606 i = 1;
4607 printmsgerr(" Reading: "); 4607 printmsgerr(" Reading: ");
4608 while (error == ERR_NONE || error == ERR_EMPTY) { 4608 while (error == ERR_NONE || error == ERR_EMPTY) {
4609 error = Phone->GetGPRSAccessPoint(&s,&GPRSPoint); 4609 error = Phone->GetGPRSAccessPoint(&s,&GPRSPoint);
4610 if (error == ERR_NONE) { 4610 if (error == ERR_NONE) {
4611 if (used < GSM_BACKUP_MAX_GPRSPOINT) { 4611 if (used < GSM_BACKUP_MAX_GPRSPOINT) {
4612 Backup.GPRSPoint[used] = malloc(sizeof(GSM_GPRSAccessPoint)); 4612 Backup.GPRSPoint[used] = malloc(sizeof(GSM_GPRSAccessPoint));
4613 if (Backup.GPRSPoint[used] == NULL) Print_Error(ERR_MOREMEMORY); 4613 if (Backup.GPRSPoint[used] == NULL) Print_Error(ERR_MOREMEMORY);
4614 Backup.GPRSPoint[used + 1] = NULL; 4614 Backup.GPRSPoint[used + 1] = NULL;
4615 } else { 4615 } else {
4616 printmsg(" Increase %s\n" , "GSM_BACKUP_MAX_GPRSPOINT"); 4616 printmsg(" Increase %s\n" , "GSM_BACKUP_MAX_GPRSPOINT");
4617 GSM_Terminate(); 4617 GSM_Terminate();
4618 exit(-1); 4618 exit(-1);
4619 } 4619 }
4620 *Backup.GPRSPoint[used]=GPRSPoint; 4620 *Backup.GPRSPoint[used]=GPRSPoint;
4621 used++; 4621 used++;
4622 } 4622 }
4623 i++; 4623 i++;
4624 GPRSPoint.Location = i; 4624 GPRSPoint.Location = i;
4625 printmsgerr("*"); 4625 printmsgerr("*");
4626 } 4626 }
4627 printmsgerr("\n"); 4627 printmsgerr("\n");
4628 } 4628 }
4629 4629
4630 GSM_Terminate(); 4630 GSM_Terminate();
4631 4631
4632 GSM_SaveBackupFile(argv[2],&Backup, Info.UseUnicode); 4632 GSM_SaveBackupFile(argv[2],&Backup, Info.UseUnicode);
4633 GSM_FreeBackup(&Backup); 4633 GSM_FreeBackup(&Backup);
4634} 4634}
4635 4635
4636static void Restore(int argc, char *argv[]) 4636static void Restore(int argc, char *argv[])
4637{ 4637{
4638 GSM_Backup Backup; 4638 GSM_Backup Backup;
4639 GSM_FMStation FMStation; 4639 GSM_FMStation FMStation;
4640 GSM_DateTime date_time; 4640 GSM_DateTime date_time;
4641 GSM_CalendarEntryCalendar; 4641 GSM_CalendarEntryCalendar;
4642 GSM_Bitmap Bitmap; 4642 GSM_Bitmap Bitmap;
4643 GSM_Ringtone Ringtone; 4643 GSM_Ringtone Ringtone;
4644 GSM_MemoryEntry Pbk; 4644 GSM_MemoryEntry Pbk;
4645 GSM_MemoryStatusMemStatus; 4645 GSM_MemoryStatusMemStatus;
4646 GSM_ToDoEntry ToDo; 4646 GSM_ToDoEntry ToDo;
4647 GSM_ToDoStatus ToDoStatus; 4647 GSM_ToDoStatus ToDoStatus;
4648 GSM_Profile Profile; 4648 GSM_Profile Profile;
4649 GSM_MultiWAPSettingsSettings; 4649 GSM_MultiWAPSettingsSettings;
4650 GSM_GPRSAccessPointGPRSPoint; 4650 GSM_GPRSAccessPointGPRSPoint;
4651 GSM_WAPBookmark Bookmark; 4651 GSM_WAPBookmark Bookmark;
4652 int i, used, max = 0; 4652 int i, used, max = 0;
4653 bool Past = true; 4653 bool Past = true;
4654 bool Found, DoRestore; 4654 bool Found, DoRestore;
4655 4655
4656 error=GSM_ReadBackupFile(argv[2],&Backup); 4656 error=GSM_ReadBackupFile(argv[2],&Backup);
4657 if (error!=ERR_NOTIMPLEMENTED) { 4657 if (error!=ERR_NOTIMPLEMENTED) {
4658 Print_Error(error); 4658 Print_Error(error);
4659 } else { 4659 } else {
4660 printmsgerr("WARNING: Some data not read from file. It can be damaged or restoring some settings from this file format not implemented (maybe higher Gammu required ?)\n"); 4660 printmsgerr("WARNING: Some data not read from file. It can be damaged or restoring some settings from this file format not implemented (maybe higher Gammu required ?)\n");
4661 } 4661 }
4662 4662
4663 signal(SIGINT, interrupt); 4663 signal(SIGINT, interrupt);
4664 printmsgerr("Press Ctrl+C to break...\n"); 4664 printmsgerr("Press Ctrl+C to break...\n");
4665 4665
4666 if (Backup.DateTimeAvailable) printmsgerr("Time of backup : %s\n",OSDateTime(Backup.DateTime,false)); 4666 if (Backup.DateTimeAvailable) printmsgerr("Time of backup : %s\n",OSDateTime(Backup.DateTime,false));
4667 if (Backup.Model[0]!=0) printmsgerr("Phone : %s\n",Backup.Model); 4667 if (Backup.Model[0]!=0) printmsgerr("Phone : %s\n",Backup.Model);
4668 if (Backup.IMEI[0]!=0) printmsgerr("IMEI : %s\n",Backup.IMEI); 4668 if (Backup.IMEI[0]!=0) printmsgerr("IMEI : %s\n",Backup.IMEI);
4669 if (Backup.Creator[0]!=0) printmsgerr("File created by : %s\n",Backup.Creator); 4669 if (Backup.Creator[0]!=0) printmsgerr("File created by : %s\n",Backup.Creator);
4670 4670
4671 if (Backup.MD5Calculated[0]!=0) { 4671 if (Backup.MD5Calculated[0]!=0) {
4672 dbgprintf("\"%s\"\n",Backup.MD5Original); 4672 dbgprintf("\"%s\"\n",Backup.MD5Original);
4673 dbgprintf("\"%s\"\n",Backup.MD5Calculated); 4673 dbgprintf("\"%s\"\n",Backup.MD5Calculated);
4674 if (strcmp(Backup.MD5Original,Backup.MD5Calculated)) { 4674 if (strcmp(Backup.MD5Original,Backup.MD5Calculated)) {
4675 if (!answer_yes("Checksum in backup file do not match. Continue")) return; 4675 if (!answer_yes("Checksum in backup file do not match. Continue")) return;
4676 } 4676 }
4677 } 4677 }
4678 4678
4679 GSM_Init(true); 4679 GSM_Init(true);
4680 4680
4681 DoRestore = false; 4681 DoRestore = false;
4682 if (Backup.PhonePhonebook[0] != NULL) { 4682 if (Backup.PhonePhonebook[0] != NULL) {
4683 MemStatus.MemoryType = MEM_ME; 4683 MemStatus.MemoryType = MEM_ME;
4684 error=Phone->GetMemoryStatus(&s, &MemStatus); 4684 error=Phone->GetMemoryStatus(&s, &MemStatus);
4685 if (error==ERR_NONE) { 4685 if (error==ERR_NONE) {
4686 max = 0; 4686 max = 0;
4687 while (Backup.PhonePhonebook[max]!=NULL) max++; 4687 while (Backup.PhonePhonebook[max]!=NULL) max++;
4688 printmsgerr("%i entries in backup file\n",max); 4688 printmsgerr("%i entries in backup file\n",max);
4689 if (answer_yes("Restore phone phonebook")) DoRestore = true; 4689 if (answer_yes("Restore phone phonebook")) DoRestore = true;
4690 } 4690 }
4691 } 4691 }
4692 if (DoRestore) { 4692 if (DoRestore) {
4693 used = 0; 4693 used = 0;
4694 for (i=0;i<MemStatus.MemoryUsed+MemStatus.MemoryFree;i++) { 4694 for (i=0;i<MemStatus.MemoryUsed+MemStatus.MemoryFree;i++) {
4695 Pbk.MemoryType = MEM_ME; 4695 Pbk.MemoryType = MEM_ME;
4696 Pbk.Location= i + 1; 4696 Pbk.Location= i + 1;
4697 Pbk.EntriesNum= 0; 4697 Pbk.EntriesNum= 0;
4698 if (used<max) { 4698 if (used<max) {
4699 if (Backup.PhonePhonebook[used]->Location == Pbk.Location) { 4699 if (Backup.PhonePhonebook[used]->Location == Pbk.Location) {
4700 Pbk = *Backup.PhonePhonebook[used]; 4700 Pbk = *Backup.PhonePhonebook[used];
4701 used++; 4701 used++;
4702 dbgprintf("Location %i\n",Pbk.Location); 4702 dbgprintf("Location %i\n",Pbk.Location);
4703 if (Pbk.EntriesNum != 0) error=Phone->SetMemory(&s, &Pbk); 4703 if (Pbk.EntriesNum != 0) error=Phone->SetMemory(&s, &Pbk);
4704 } 4704 }
4705 } 4705 }
4706 if (Pbk.EntriesNum == 0) error=Phone->DeleteMemory(&s, &Pbk); 4706 if (Pbk.EntriesNum == 0) error=Phone->DeleteMemory(&s, &Pbk);
4707 Print_Error(error); 4707 Print_Error(error);
4708 printmsgerr("%cWriting: %i percent",13,(i+1)*100/(MemStatus.MemoryUsed+MemStatus.MemoryFree)); 4708 printmsgerr("%cWriting: %i percent",13,(i+1)*100/(MemStatus.MemoryUsed+MemStatus.MemoryFree));
4709 if (gshutdown) { 4709 if (gshutdown) {
4710 GSM_Terminate(); 4710 GSM_Terminate();
4711 exit(0); 4711 exit(0);
4712 } 4712 }
4713 } 4713 }
4714 printmsgerr("\n"); 4714 printmsgerr("\n");
4715 } 4715 }
4716 4716
4717 DoRestore = false; 4717 DoRestore = false;
4718 if (Backup.SIMPhonebook[0] != NULL) { 4718 if (Backup.SIMPhonebook[0] != NULL) {
4719 MemStatus.MemoryType = MEM_SM; 4719 MemStatus.MemoryType = MEM_SM;
4720 error=Phone->GetMemoryStatus(&s, &MemStatus); 4720 error=Phone->GetMemoryStatus(&s, &MemStatus);
4721 if (error==ERR_NONE) { 4721 if (error==ERR_NONE) {
4722 max = 0; 4722 max = 0;
4723 while (Backup.SIMPhonebook[max]!=NULL) max++; 4723 while (Backup.SIMPhonebook[max]!=NULL) max++;
4724 printmsgerr("%i entries in backup file\n",max); 4724 printmsgerr("%i entries in backup file\n",max);
4725 if (answer_yes("Restore SIM phonebook")) DoRestore = true; 4725 if (answer_yes("Restore SIM phonebook")) DoRestore = true;
4726 } 4726 }
4727 } 4727 }
4728 if (DoRestore) { 4728 if (DoRestore) {
4729 used = 0; 4729 used = 0;
4730 for (i=0;i<MemStatus.MemoryUsed+MemStatus.MemoryFree;i++) { 4730 for (i=0;i<MemStatus.MemoryUsed+MemStatus.MemoryFree;i++) {
4731 Pbk.MemoryType = MEM_SM; 4731 Pbk.MemoryType = MEM_SM;
4732 Pbk.Location= i + 1; 4732 Pbk.Location= i + 1;
4733 Pbk.EntriesNum= 0; 4733 Pbk.EntriesNum= 0;
4734 if (used<max) { 4734 if (used<max) {
4735 if (Backup.SIMPhonebook[used]->Location == Pbk.Location) { 4735 if (Backup.SIMPhonebook[used]->Location == Pbk.Location) {
4736 Pbk = *Backup.SIMPhonebook[used]; 4736 Pbk = *Backup.SIMPhonebook[used];
4737 used++; 4737 used++;
4738 dbgprintf("Location %i\n",Pbk.Location); 4738 dbgprintf("Location %i\n",Pbk.Location);
4739 if (Pbk.EntriesNum != 0) error=Phone->SetMemory(&s, &Pbk); 4739 if (Pbk.EntriesNum != 0) error=Phone->SetMemory(&s, &Pbk);
4740 } 4740 }
4741 } 4741 }
4742 if (Pbk.EntriesNum == 0) error=Phone->DeleteMemory(&s, &Pbk); 4742 if (Pbk.EntriesNum == 0) error=Phone->DeleteMemory(&s, &Pbk);
4743 Print_Error(error); 4743 Print_Error(error);
4744 printmsgerr("%cWriting: %i percent",13,(i+1)*100/(MemStatus.MemoryUsed+MemStatus.MemoryFree)); 4744 printmsgerr("%cWriting: %i percent",13,(i+1)*100/(MemStatus.MemoryUsed+MemStatus.MemoryFree));
4745 if (gshutdown) { 4745 if (gshutdown) {
4746 GSM_Terminate(); 4746 GSM_Terminate();
4747 exit(0); 4747 exit(0);
4748 } 4748 }
4749 } 4749 }
4750 printmsgerr("\n"); 4750 printmsgerr("\n");
4751 } 4751 }
4752 4752
4753 DoRestore = false; 4753 DoRestore = false;
4754 if (Backup.CallerLogos[0] != NULL) { 4754 if (Backup.CallerLogos[0] != NULL) {
4755 Bitmap.Type = GSM_CallerGroupLogo; 4755 Bitmap.Type = GSM_CallerGroupLogo;
4756 Bitmap.Location = 1; 4756 Bitmap.Location = 1;
4757 error=Phone->GetBitmap(&s,&Bitmap); 4757 error=Phone->GetBitmap(&s,&Bitmap);
4758 if (error == ERR_NONE) { 4758 if (error == ERR_NONE) {
4759 if (answer_yes("Restore caller groups and logos")) DoRestore = true; 4759 if (answer_yes("Restore caller groups and logos")) DoRestore = true;
4760 } 4760 }
4761 } 4761 }
4762 if (DoRestore) { 4762 if (DoRestore) {
4763 max = 0; 4763 max = 0;
4764 while (Backup.CallerLogos[max]!=NULL) max++; 4764 while (Backup.CallerLogos[max]!=NULL) max++;
4765 for (i=0;i<max;i++) { 4765 for (i=0;i<max;i++) {
4766 error=Phone->SetBitmap(&s,Backup.CallerLogos[i]); 4766 error=Phone->SetBitmap(&s,Backup.CallerLogos[i]);
4767 Print_Error(error); 4767 Print_Error(error);
4768 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 4768 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
4769 if (gshutdown) { 4769 if (gshutdown) {
4770 GSM_Terminate(); 4770 GSM_Terminate();
4771 exit(0); 4771 exit(0);
4772 } 4772 }
4773 } 4773 }
4774 printmsgerr("\n"); 4774 printmsgerr("\n");
4775 } 4775 }
4776 4776
4777 if (!mystrncasecmp(s.CurrentConfig->SyncTime,"yes",0)) { 4777 if (!mystrncasecmp(s.CurrentConfig->SyncTime,"yes",0)) {
4778 if (answer_yes("Do you want to set date/time in phone (NOTE: in some phones it's required to correctly restore calendar notes and other items)")) { 4778 if ( true /*LRanswer_yes("Do you want to set date/time in phone (NOTE: in some phones it's required to correctly restore calendar notes and other items)")*/) {
4779 GSM_GetCurrentDateTime(&date_time); 4779 GSM_GetCurrentDateTime(&date_time);
4780 4780
4781 error=Phone->SetDateTime(&s, &date_time); 4781 error=Phone->SetDateTime(&s, &date_time);
4782 Print_Error(error); 4782 Print_Error(error);
4783 } 4783 }
4784 } 4784 }
4785 DoRestore = false; 4785 DoRestore = false;
4786 if (Backup.Calendar[0] != NULL) { 4786 if (Backup.Calendar[0] != NULL) {
4787 /* N6110 doesn't support getting calendar status */ 4787 /* N6110 doesn't support getting calendar status */
4788 error = Phone->GetNextCalendar(&s,&Calendar,true); 4788 error = Phone->GetNextCalendar(&s,&Calendar,true);
4789 if (error == ERR_NONE || error == ERR_INVALIDLOCATION || error == ERR_EMPTY) { 4789 if (error == ERR_NONE || error == ERR_INVALIDLOCATION || error == ERR_EMPTY) {
4790 max = 0; 4790 max = 0;
4791 while (Backup.Calendar[max] != NULL) max++; 4791 while (Backup.Calendar[max] != NULL) max++;
4792 printmsgerr("%i entries in backup file\n",max); 4792 printmsgerr("%i entries in backup file\n",max);
4793 // LR 4793 // LR
4794 //if (answer_yes("Restore calendar notes")) { 4794 //if (answer_yes("Restore calendar notes")) {
4795 //Past = answer_yes("Restore notes from the past"); 4795 //Past = answer_yes("Restore notes from the past");
4796 DoRestore = true; 4796 DoRestore = true;
4797 //} 4797 //}
4798 } 4798 }
4799 } 4799 }
4800 if (DoRestore) { 4800 if (DoRestore) {
4801 printmsgerr("Deleting old notes: "); 4801 printmsgerr("Deleting old notes: ");
4802 error = Phone->DeleteAllCalendar(&s); 4802 error = Phone->DeleteAllCalendar(&s);
4803 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) { 4803 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) {
4804 while (1) { 4804 while (1) {
4805 error = Phone->GetNextCalendar(&s,&Calendar,true); 4805 error = Phone->GetNextCalendar(&s,&Calendar,true);
4806 if (error != ERR_NONE) break; 4806 if (error != ERR_NONE) break;
4807 error = Phone->DeleteCalendar(&s,&Calendar); 4807 error = Phone->DeleteCalendar(&s,&Calendar);
4808 Print_Error(error); 4808 Print_Error(error);
4809 printmsgerr("*"); 4809 printmsgerr("*");
4810 } 4810 }
4811 printmsgerr("\n"); 4811 printmsgerr("\n");
4812 } else { 4812 } else {
4813 printmsgerr("Done\n"); 4813 printmsgerr("Done\n");
4814 Print_Error(error); 4814 Print_Error(error);
4815 } 4815 }
4816 4816
4817 for (i=0;i<max;i++) { 4817 for (i=0;i<max;i++) {
4818 if (!Past && IsCalendarNoteFromThePast(Backup.Calendar[i])) continue; 4818 if (!Past && IsCalendarNoteFromThePast(Backup.Calendar[i])) continue;
4819 4819
4820 Calendar = *Backup.Calendar[i]; 4820 Calendar = *Backup.Calendar[i];
4821 error=Phone->AddCalendar(&s,&Calendar); 4821 error=Phone->AddCalendar(&s,&Calendar);
4822 Print_Error(error); 4822 Print_Error(error);
4823 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 4823 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
4824 if (gshutdown) { 4824 if (gshutdown) {
4825 GSM_Terminate(); 4825 GSM_Terminate();
4826 exit(0); 4826 exit(0);
4827 } 4827 }
4828 } 4828 }
4829 printmsgerr("\n"); 4829 printmsgerr("\n");
4830 } 4830 }
4831 4831
4832 DoRestore = false; 4832 DoRestore = false;
4833 if (Backup.ToDo[0] != NULL) { 4833 if (Backup.ToDo[0] != NULL) {
4834 error = Phone->GetToDoStatus(&s,&ToDoStatus); 4834 error = Phone->GetToDoStatus(&s,&ToDoStatus);
4835 if (error == ERR_NONE) { 4835 if (error == ERR_NONE) {
4836 max = 0; 4836 max = 0;
4837 while (Backup.ToDo[max]!=NULL) max++; 4837 while (Backup.ToDo[max]!=NULL) max++;
4838 printmsgerr("%i entries in backup file\n",max); 4838 printmsgerr("%i entries in backup file\n",max);
4839 4839
4840 //LR if (answer_yes("Restore ToDo")) 4840 //LR if (answer_yes("Restore ToDo"))
4841 DoRestore = true; 4841 DoRestore = true;
4842 } 4842 }
4843 } 4843 }
4844 if (DoRestore) { 4844 if (DoRestore) {
4845 ToDo = *Backup.ToDo[0]; 4845 ToDo = *Backup.ToDo[0];
4846 error = Phone->SetToDo(&s,&ToDo); 4846 error = Phone->SetToDo(&s,&ToDo);
4847 } 4847 }
4848 if (DoRestore && (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED)) { 4848 if (DoRestore && (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED)) {
4849 printmsgerr("Deleting old ToDo: "); 4849 printmsgerr("Deleting old ToDo: ");
4850 error=Phone->DeleteAllToDo(&s); 4850 error=Phone->DeleteAllToDo(&s);
4851 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) { 4851 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) {
4852 while (1) { 4852 while (1) {
4853 error = Phone->GetNextToDo(&s,&ToDo,true); 4853 error = Phone->GetNextToDo(&s,&ToDo,true);
4854 if (error != ERR_NONE) break; 4854 if (error != ERR_NONE) break;
4855 error = Phone->DeleteToDo(&s,&ToDo); 4855 error = Phone->DeleteToDo(&s,&ToDo);
4856 Print_Error(error); 4856 Print_Error(error);
4857 printmsgerr("*"); 4857 printmsgerr("*");
4858 } 4858 }
4859 printmsgerr("\n"); 4859 printmsgerr("\n");
4860 } else { 4860 } else {
4861 printmsgerr("Done\n"); 4861 printmsgerr("Done\n");
4862 Print_Error(error); 4862 Print_Error(error);
4863 } 4863 }
4864 4864
4865 for (i=0;i<max;i++) { 4865 for (i=0;i<max;i++) {
4866 ToDo = *Backup.ToDo[i]; 4866 ToDo = *Backup.ToDo[i];
4867 ToDo.Location = 0; 4867 ToDo.Location = 0;
4868 error=Phone->AddToDo(&s,&ToDo); 4868 error=Phone->AddToDo(&s,&ToDo);
4869 Print_Error(error); 4869 Print_Error(error);
4870 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 4870 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
4871 if (gshutdown) { 4871 if (gshutdown) {
4872 GSM_Terminate(); 4872 GSM_Terminate();
4873 exit(0); 4873 exit(0);
4874 } 4874 }
4875 } 4875 }
4876 printmsgerr("\n"); 4876 printmsgerr("\n");
4877 } else if (DoRestore) { 4877 } else if (DoRestore) {
4878 /* At first delete entries, that were deleted */ 4878 /* At first delete entries, that were deleted */
4879 used = 0; 4879 used = 0;
4880 error = Phone->GetNextToDo(&s,&ToDo,true); 4880 error = Phone->GetNextToDo(&s,&ToDo,true);
4881 while (error == ERR_NONE) { 4881 while (error == ERR_NONE) {
4882 used++; 4882 used++;
4883 Found = false; 4883 Found = false;
4884 for (i=0;i<max;i++) { 4884 for (i=0;i<max;i++) {
4885 if (Backup.ToDo[i]->Location == ToDo.Location) { 4885 if (Backup.ToDo[i]->Location == ToDo.Location) {
4886 Found = true; 4886 Found = true;
4887 break; 4887 break;
4888 } 4888 }
4889 } 4889 }
4890 if (!Found) { 4890 if (!Found) {
4891 error=Phone->DeleteToDo(&s,&ToDo); 4891 error=Phone->DeleteToDo(&s,&ToDo);
4892 Print_Error(error); 4892 Print_Error(error);
4893 } 4893 }
4894 error = Phone->GetNextToDo(&s,&ToDo,false); 4894 error = Phone->GetNextToDo(&s,&ToDo,false);
4895 printmsgerr("%cCleaning: %i percent",13,used*100/ToDoStatus.Used); 4895 printmsgerr("%cCleaning: %i percent",13,used*100/ToDoStatus.Used);
4896 if (gshutdown) { 4896 if (gshutdown) {
4897 GSM_Terminate(); 4897 GSM_Terminate();
4898 exit(0); 4898 exit(0);
4899 } 4899 }
4900 } 4900 }
4901 printmsgerr("\n"); 4901 printmsgerr("\n");
4902 4902
4903 /* Now write modified/new entries */ 4903 /* Now write modified/new entries */
4904 for (i=0;i<max;i++) { 4904 for (i=0;i<max;i++) {
4905 ToDo = *Backup.ToDo[i]; 4905 ToDo = *Backup.ToDo[i];
4906 error = Phone->SetToDo(&s,&ToDo); 4906 error = Phone->SetToDo(&s,&ToDo);
4907 Print_Error(error); 4907 Print_Error(error);
4908 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 4908 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
4909 if (gshutdown) { 4909 if (gshutdown) {
4910 GSM_Terminate(); 4910 GSM_Terminate();
4911 exit(0); 4911 exit(0);
4912 } 4912 }
4913 } 4913 }
4914 printmsgerr("\n"); 4914 printmsgerr("\n");
4915 } 4915 }
4916 4916
4917 if (Backup.SMSC[0] != NULL && answer_yes("Restore SMSC profiles")) { 4917 if (Backup.SMSC[0] != NULL && answer_yes("Restore SMSC profiles")) {
4918 max = 0; 4918 max = 0;
4919 while (Backup.SMSC[max]!=NULL) max++; 4919 while (Backup.SMSC[max]!=NULL) max++;
4920 for (i=0;i<max;i++) { 4920 for (i=0;i<max;i++) {
4921 error=Phone->SetSMSC(&s,Backup.SMSC[i]); 4921 error=Phone->SetSMSC(&s,Backup.SMSC[i]);
4922 Print_Error(error); 4922 Print_Error(error);
4923 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 4923 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
4924 if (gshutdown) { 4924 if (gshutdown) {
4925 GSM_Terminate(); 4925 GSM_Terminate();
4926 exit(0); 4926 exit(0);
4927 } 4927 }
4928 } 4928 }
4929 printmsgerr("\n"); 4929 printmsgerr("\n");
4930 } 4930 }
4931 if (Backup.StartupLogo != NULL && answer_yes("Restore startup logo/text")) { 4931 if (Backup.StartupLogo != NULL && answer_yes("Restore startup logo/text")) {
4932 error=Phone->SetBitmap(&s,Backup.StartupLogo); 4932 error=Phone->SetBitmap(&s,Backup.StartupLogo);
4933 Print_Error(error); 4933 Print_Error(error);
4934 } 4934 }
4935 if (Backup.OperatorLogo != NULL && answer_yes("Restore operator logo")) { 4935 if (Backup.OperatorLogo != NULL && answer_yes("Restore operator logo")) {
4936 error=Phone->SetBitmap(&s,Backup.OperatorLogo); 4936 error=Phone->SetBitmap(&s,Backup.OperatorLogo);
4937 Print_Error(error); 4937 Print_Error(error);
4938 } 4938 }
4939 DoRestore = false; 4939 DoRestore = false;
4940 if (Backup.WAPBookmark[0] != NULL) { 4940 if (Backup.WAPBookmark[0] != NULL) {
4941 Bookmark.Location = 1; 4941 Bookmark.Location = 1;
4942 error = Phone->GetWAPBookmark(&s,&Bookmark); 4942 error = Phone->GetWAPBookmark(&s,&Bookmark);
4943 if (error == ERR_NONE || error == ERR_INVALIDLOCATION) { 4943 if (error == ERR_NONE || error == ERR_INVALIDLOCATION) {
4944 if (answer_yes("Restore WAP bookmarks")) DoRestore = true; 4944 if (answer_yes("Restore WAP bookmarks")) DoRestore = true;
4945 } 4945 }
4946 } 4946 }
4947 if (DoRestore) { 4947 if (DoRestore) {
4948 printmsgerr("Deleting old bookmarks: "); 4948 printmsgerr("Deleting old bookmarks: ");
4949 /* One thing to explain: DCT4 phones seems to have bug here. 4949 /* One thing to explain: DCT4 phones seems to have bug here.
4950 * When delete for example first bookmark, phone change 4950 * When delete for example first bookmark, phone change
4951 * numeration for getting frame, not for deleting. So, we try to 4951 * numeration for getting frame, not for deleting. So, we try to
4952 * get 1'st bookmark. Inside frame is "correct" location. We use 4952 * get 1'st bookmark. Inside frame is "correct" location. We use
4953 * it later 4953 * it later
4954 */ 4954 */
4955 while (error==ERR_NONE) { 4955 while (error==ERR_NONE) {
4956 error = Phone->DeleteWAPBookmark(&s,&Bookmark); 4956 error = Phone->DeleteWAPBookmark(&s,&Bookmark);
4957 Bookmark.Location = 1; 4957 Bookmark.Location = 1;
4958 error = Phone->GetWAPBookmark(&s,&Bookmark); 4958 error = Phone->GetWAPBookmark(&s,&Bookmark);
4959 printmsgerr("*"); 4959 printmsgerr("*");
4960 } 4960 }
4961 printmsgerr("\n"); 4961 printmsgerr("\n");
4962 max = 0; 4962 max = 0;
4963 while (Backup.WAPBookmark[max]!=NULL) max++; 4963 while (Backup.WAPBookmark[max]!=NULL) max++;
4964 for (i=0;i<max;i++) { 4964 for (i=0;i<max;i++) {
4965 Bookmark = *Backup.WAPBookmark[i]; 4965 Bookmark = *Backup.WAPBookmark[i];
4966 Bookmark.Location = 0; 4966 Bookmark.Location = 0;
4967 error=Phone->SetWAPBookmark(&s,&Bookmark); 4967 error=Phone->SetWAPBookmark(&s,&Bookmark);
4968 Print_Error(error); 4968 Print_Error(error);
4969 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 4969 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
4970 if (gshutdown) { 4970 if (gshutdown) {
@@ -5017,385 +5017,385 @@ static void Restore(int argc, char *argv[])
5017 } 5017 }
5018 } 5018 }
5019 printmsgerr("\n"); 5019 printmsgerr("\n");
5020 } 5020 }
5021 DoRestore = false; 5021 DoRestore = false;
5022 if (Backup.Ringtone[0] != NULL) { 5022 if (Backup.Ringtone[0] != NULL) {
5023 Ringtone.Location = 1; 5023 Ringtone.Location = 1;
5024 Ringtone.Format = 0; 5024 Ringtone.Format = 0;
5025 error = Phone->GetRingtone(&s,&Ringtone,false); 5025 error = Phone->GetRingtone(&s,&Ringtone,false);
5026 if (error == ERR_NONE || error ==ERR_EMPTY) { 5026 if (error == ERR_NONE || error ==ERR_EMPTY) {
5027 if (Phone->DeleteUserRingtones != NOTSUPPORTED) { 5027 if (Phone->DeleteUserRingtones != NOTSUPPORTED) {
5028 if (answer_yes("Delete all user ringtones")) DoRestore = true; 5028 if (answer_yes("Delete all user ringtones")) DoRestore = true;
5029 } 5029 }
5030 } 5030 }
5031 } 5031 }
5032 if (DoRestore) { 5032 if (DoRestore) {
5033 printmsgerr("Deleting: "); 5033 printmsgerr("Deleting: ");
5034 error=Phone->DeleteUserRingtones(&s); 5034 error=Phone->DeleteUserRingtones(&s);
5035 Print_Error(error); 5035 Print_Error(error);
5036 printmsgerr("Done\n"); 5036 printmsgerr("Done\n");
5037 DoRestore = false; 5037 DoRestore = false;
5038 if (answer_yes("Restore user ringtones")) DoRestore = true; 5038 if (answer_yes("Restore user ringtones")) DoRestore = true;
5039 } 5039 }
5040 if (DoRestore) { 5040 if (DoRestore) {
5041 max = 0; 5041 max = 0;
5042 while (Backup.Ringtone[max]!=NULL) max++; 5042 while (Backup.Ringtone[max]!=NULL) max++;
5043 for (i=0;i<max;i++) { 5043 for (i=0;i<max;i++) {
5044 error=GSM_RingtoneConvert(&Ringtone, Backup.Ringtone[i], Ringtone.Format); 5044 error=GSM_RingtoneConvert(&Ringtone, Backup.Ringtone[i], Ringtone.Format);
5045 Print_Error(error); 5045 Print_Error(error);
5046 error=Phone->SetRingtone(&s,&Ringtone,&i); 5046 error=Phone->SetRingtone(&s,&Ringtone,&i);
5047 Print_Error(error); 5047 Print_Error(error);
5048 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 5048 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
5049 if (gshutdown) { 5049 if (gshutdown) {
5050 GSM_Terminate(); 5050 GSM_Terminate();
5051 exit(0); 5051 exit(0);
5052 } 5052 }
5053 } 5053 }
5054 printmsgerr("\n"); 5054 printmsgerr("\n");
5055 } 5055 }
5056 DoRestore = false; 5056 DoRestore = false;
5057 if (Backup.Profiles[0] != NULL) { 5057 if (Backup.Profiles[0] != NULL) {
5058 Profile.Location = 1; 5058 Profile.Location = 1;
5059 error = Phone->GetProfile(&s,&Profile); 5059 error = Phone->GetProfile(&s,&Profile);
5060 if (error == ERR_NONE) { 5060 if (error == ERR_NONE) {
5061 if (answer_yes("Restore profiles")) DoRestore = true; 5061 if (answer_yes("Restore profiles")) DoRestore = true;
5062 } 5062 }
5063 } 5063 }
5064 if (DoRestore) { 5064 if (DoRestore) {
5065 Profile.Location= 0; 5065 Profile.Location= 0;
5066 max = 0; 5066 max = 0;
5067 while (Backup.Profiles[max]!=NULL) max++; 5067 while (Backup.Profiles[max]!=NULL) max++;
5068 for (i=0;i<max;i++) { 5068 for (i=0;i<max;i++) {
5069 Profile= *Backup.Profiles[i]; 5069 Profile= *Backup.Profiles[i];
5070 error=Phone->SetProfile(&s,&Profile); 5070 error=Phone->SetProfile(&s,&Profile);
5071 Print_Error(error); 5071 Print_Error(error);
5072 if (gshutdown) { 5072 if (gshutdown) {
5073 GSM_Terminate(); 5073 GSM_Terminate();
5074 exit(0); 5074 exit(0);
5075 } 5075 }
5076 } 5076 }
5077 printmsgerr("\n"); 5077 printmsgerr("\n");
5078 } 5078 }
5079 DoRestore = false; 5079 DoRestore = false;
5080 if (Backup.FMStation[0] != NULL) { 5080 if (Backup.FMStation[0] != NULL) {
5081 FMStation.Location = 1; 5081 FMStation.Location = 1;
5082 error = Phone->GetFMStation(&s,&FMStation); 5082 error = Phone->GetFMStation(&s,&FMStation);
5083 if (error == ERR_NONE || error == ERR_EMPTY) { 5083 if (error == ERR_NONE || error == ERR_EMPTY) {
5084 if (answer_yes("Restore FM stations")) DoRestore = true; 5084 if (answer_yes("Restore FM stations")) DoRestore = true;
5085 } 5085 }
5086 } 5086 }
5087 if (DoRestore) { 5087 if (DoRestore) {
5088 printmsgerr("Deleting old FM stations: "); 5088 printmsgerr("Deleting old FM stations: ");
5089 error=Phone->ClearFMStations(&s); 5089 error=Phone->ClearFMStations(&s);
5090 Print_Error(error); 5090 Print_Error(error);
5091 printmsgerr("Done\n"); 5091 printmsgerr("Done\n");
5092 max = 0; 5092 max = 0;
5093 while (Backup.FMStation[max]!=NULL) max++; 5093 while (Backup.FMStation[max]!=NULL) max++;
5094 for (i=0;i<max;i++) { 5094 for (i=0;i<max;i++) {
5095 FMStation = *Backup.FMStation[i]; 5095 FMStation = *Backup.FMStation[i];
5096 error=Phone->SetFMStation(&s,&FMStation); 5096 error=Phone->SetFMStation(&s,&FMStation);
5097 Print_Error(error); 5097 Print_Error(error);
5098 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 5098 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
5099 if (gshutdown) { 5099 if (gshutdown) {
5100 GSM_Terminate(); 5100 GSM_Terminate();
5101 exit(0); 5101 exit(0);
5102 } 5102 }
5103 } 5103 }
5104 printmsgerr("\n"); 5104 printmsgerr("\n");
5105 } 5105 }
5106 DoRestore = false; 5106 DoRestore = false;
5107 if (Backup.GPRSPoint[0] != NULL) { 5107 if (Backup.GPRSPoint[0] != NULL) {
5108 GPRSPoint.Location = 1; 5108 GPRSPoint.Location = 1;
5109 error = Phone->GetGPRSAccessPoint(&s,&GPRSPoint); 5109 error = Phone->GetGPRSAccessPoint(&s,&GPRSPoint);
5110 if (error == ERR_NONE || error == ERR_EMPTY) { 5110 if (error == ERR_NONE || error == ERR_EMPTY) {
5111 if (answer_yes("Restore GPRS Points")) DoRestore = true; 5111 if (answer_yes("Restore GPRS Points")) DoRestore = true;
5112 } 5112 }
5113 } 5113 }
5114 if (DoRestore) { 5114 if (DoRestore) {
5115 max = 0; 5115 max = 0;
5116 while (Backup.GPRSPoint[max]!=NULL) max++; 5116 while (Backup.GPRSPoint[max]!=NULL) max++;
5117 for (i=0;i<max;i++) { 5117 for (i=0;i<max;i++) {
5118 error=Phone->SetGPRSAccessPoint(&s,Backup.GPRSPoint[i]); 5118 error=Phone->SetGPRSAccessPoint(&s,Backup.GPRSPoint[i]);
5119 Print_Error(error); 5119 Print_Error(error);
5120 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 5120 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
5121 if (gshutdown) { 5121 if (gshutdown) {
5122 GSM_Terminate(); 5122 GSM_Terminate();
5123 exit(0); 5123 exit(0);
5124 } 5124 }
5125 } 5125 }
5126 printmsgerr("\n"); 5126 printmsgerr("\n");
5127 } 5127 }
5128 5128
5129 GSM_Terminate(); 5129 GSM_Terminate();
5130} 5130}
5131 5131
5132static void AddNew(int argc, char *argv[]) 5132static void AddNew(int argc, char *argv[])
5133{ 5133{
5134 GSM_Backup Backup; 5134 GSM_Backup Backup;
5135 GSM_DateTime date_time; 5135 GSM_DateTime date_time;
5136 GSM_MemoryEntry Pbk; 5136 GSM_MemoryEntry Pbk;
5137 GSM_MemoryStatusMemStatus; 5137 GSM_MemoryStatusMemStatus;
5138 GSM_ToDoEntry ToDo; 5138 GSM_ToDoEntry ToDo;
5139 GSM_ToDoStatus ToDoStatus; 5139 GSM_ToDoStatus ToDoStatus;
5140 GSM_CalendarEntryCalendar; 5140 GSM_CalendarEntryCalendar;
5141 GSM_WAPBookmark Bookmark; 5141 GSM_WAPBookmark Bookmark;
5142 int i, max, j; 5142 int i, max, j;
5143 5143
5144 error=GSM_ReadBackupFile(argv[2],&Backup); 5144 error=GSM_ReadBackupFile(argv[2],&Backup);
5145 if (error!=ERR_NOTIMPLEMENTED) Print_Error(error); 5145 if (error!=ERR_NOTIMPLEMENTED) Print_Error(error);
5146 5146
5147 signal(SIGINT, interrupt); 5147 signal(SIGINT, interrupt);
5148 printmsgerr("Press Ctrl+C to break...\n"); 5148 printmsgerr("Press Ctrl+C to break...\n");
5149 5149
5150 if (Backup.DateTimeAvailable) printmsgerr("Time of backup : %s\n",OSDateTime(Backup.DateTime,false)); 5150 if (Backup.DateTimeAvailable) printmsgerr("Time of backup : %s\n",OSDateTime(Backup.DateTime,false));
5151 if (Backup.Model[0]!=0) printmsgerr("Phone : %s\n",Backup.Model); 5151 if (Backup.Model[0]!=0) printmsgerr("Phone : %s\n",Backup.Model);
5152 if (Backup.IMEI[0]!=0) printmsgerr("IMEI : %s\n",Backup.IMEI); 5152 if (Backup.IMEI[0]!=0) printmsgerr("IMEI : %s\n",Backup.IMEI);
5153 5153
5154 GSM_Init(true); 5154 GSM_Init(true);
5155 5155
5156 if (Backup.PhonePhonebook[0] != NULL) { 5156 if (Backup.PhonePhonebook[0] != NULL) {
5157 MemStatus.MemoryType = MEM_ME; 5157 MemStatus.MemoryType = MEM_ME;
5158 error=Phone->GetMemoryStatus(&s, &MemStatus); 5158 error=Phone->GetMemoryStatus(&s, &MemStatus);
5159 if (error==ERR_NONE) { 5159 if (error==ERR_NONE) {
5160 max = 0; 5160 max = 0;
5161 while (Backup.PhonePhonebook[max]!=NULL) max++; 5161 while (Backup.PhonePhonebook[max]!=NULL) max++;
5162 printmsgerr("%i entries in backup file\n",max); 5162 printmsgerr("%i entries in backup file\n",max);
5163 if (MemStatus.MemoryFree < max) { 5163 if (MemStatus.MemoryFree < max) {
5164 printmsgerr("Memory has only %i free locations.Exiting\n",MemStatus.MemoryFree); 5164 printmsgerr("Memory has only %i free locations.Exiting\n",MemStatus.MemoryFree);
5165 } else if (answer_yes("Add phone phonebook entries")) { 5165 } else if (answer_yes("Add phone phonebook entries")) {
5166 for (i=0;i<max;i++) { 5166 for (i=0;i<max;i++) {
5167 Pbk = *Backup.PhonePhonebook[i]; 5167 Pbk = *Backup.PhonePhonebook[i];
5168 Pbk.MemoryType = MEM_ME; 5168 Pbk.MemoryType = MEM_ME;
5169 error=Phone->AddMemory(&s, &Pbk); 5169 error=Phone->AddMemory(&s, &Pbk);
5170 Print_Error(error); 5170 Print_Error(error);
5171 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 5171 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
5172 if (gshutdown) { 5172 if (gshutdown) {
5173 GSM_Terminate(); 5173 GSM_Terminate();
5174 exit(0); 5174 exit(0);
5175 } 5175 }
5176 } 5176 }
5177 printmsgerr("\n"); 5177 printmsgerr("\n");
5178 } 5178 }
5179 } 5179 }
5180 } 5180 }
5181 if (Backup.SIMPhonebook[0] != NULL) { 5181 if (Backup.SIMPhonebook[0] != NULL) {
5182 MemStatus.MemoryType = MEM_SM; 5182 MemStatus.MemoryType = MEM_SM;
5183 error=Phone->GetMemoryStatus(&s, &MemStatus); 5183 error=Phone->GetMemoryStatus(&s, &MemStatus);
5184 if (error==ERR_NONE) { 5184 if (error==ERR_NONE) {
5185 max = 0; 5185 max = 0;
5186 while (Backup.SIMPhonebook[max]!=NULL) max++; 5186 while (Backup.SIMPhonebook[max]!=NULL) max++;
5187 printmsgerr("%i entries in backup file\n",max); 5187 printmsgerr("%i entries in backup file\n",max);
5188 if (MemStatus.MemoryFree < max) { 5188 if (MemStatus.MemoryFree < max) {
5189 printmsgerr("Memory has only %i free locations.Exiting\n",MemStatus.MemoryFree); 5189 printmsgerr("Memory has only %i free locations.Exiting\n",MemStatus.MemoryFree);
5190 } else if (answer_yes("Add SIM phonebook entries")) { 5190 } else if (answer_yes("Add SIM phonebook entries")) {
5191 j = 1; 5191 j = 1;
5192 for (i=0;i<max;i++) { 5192 for (i=0;i<max;i++) {
5193 Pbk = *Backup.SIMPhonebook[i]; 5193 Pbk = *Backup.SIMPhonebook[i];
5194 Pbk.MemoryType = MEM_SM; 5194 Pbk.MemoryType = MEM_SM;
5195 error=Phone->AddMemory(&s, &Pbk); 5195 error=Phone->AddMemory(&s, &Pbk);
5196 Print_Error(error); 5196 Print_Error(error);
5197 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 5197 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
5198 if (gshutdown) { 5198 if (gshutdown) {
5199 GSM_Terminate(); 5199 GSM_Terminate();
5200 exit(0); 5200 exit(0);
5201 } 5201 }
5202 } 5202 }
5203 printmsgerr("\n"); 5203 printmsgerr("\n");
5204 } 5204 }
5205 } 5205 }
5206 } 5206 }
5207 5207
5208 if (!mystrncasecmp(s.CurrentConfig->SyncTime,"yes",0)) { 5208 if (!mystrncasecmp(s.CurrentConfig->SyncTime,"yes",0)) {
5209 if (answer_yes("Do you want to set date/time in phone (NOTE: in some phones it's required to correctly restore calendar notes and other items)")) { 5209 if (true /*LRanswer_yes("Do you want to set date/time in phone (NOTE: in some phones it's required to correctly restore calendar notes and other items)")*/) {
5210 GSM_GetCurrentDateTime(&date_time); 5210 GSM_GetCurrentDateTime(&date_time);
5211 5211
5212 error=Phone->SetDateTime(&s, &date_time); 5212 error=Phone->SetDateTime(&s, &date_time);
5213 Print_Error(error); 5213 Print_Error(error);
5214 } 5214 }
5215 } 5215 }
5216 if (Backup.Calendar[0] != NULL) { 5216 if (Backup.Calendar[0] != NULL) {
5217 error = Phone->GetNextCalendar(&s,&Calendar,true); 5217 error = Phone->GetNextCalendar(&s,&Calendar,true);
5218 if (error == ERR_NONE || error == ERR_INVALIDLOCATION || error == ERR_EMPTY) { 5218 if (error == ERR_NONE || error == ERR_INVALIDLOCATION || error == ERR_EMPTY) {
5219 if (answer_yes("Add calendar notes")) { 5219 if (answer_yes("Add calendar notes")) {
5220 max = 0; 5220 max = 0;
5221 while (Backup.Calendar[max]!=NULL) max++; 5221 while (Backup.Calendar[max]!=NULL) max++;
5222 for (i=0;i<max;i++) { 5222 for (i=0;i<max;i++) {
5223 Calendar = *Backup.Calendar[i]; 5223 Calendar = *Backup.Calendar[i];
5224 error=Phone->AddCalendar(&s,&Calendar); 5224 error=Phone->AddCalendar(&s,&Calendar);
5225 Print_Error(error); 5225 Print_Error(error);
5226 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 5226 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
5227 if (gshutdown) { 5227 if (gshutdown) {
5228 GSM_Terminate(); 5228 GSM_Terminate();
5229 exit(0); 5229 exit(0);
5230 } 5230 }
5231 } 5231 }
5232 printmsgerr("\n"); 5232 printmsgerr("\n");
5233 } 5233 }
5234 } 5234 }
5235 } 5235 }
5236 if (Backup.ToDo[0] != NULL) { 5236 if (Backup.ToDo[0] != NULL) {
5237 ToDo.Location = 1; 5237 ToDo.Location = 1;
5238 error=Phone->GetToDoStatus(&s,&ToDoStatus); 5238 error=Phone->GetToDoStatus(&s,&ToDoStatus);
5239 if (error == ERR_NONE) { 5239 if (error == ERR_NONE) {
5240 if (answer_yes("Add ToDo")) { 5240 if (answer_yes("Add ToDo")) {
5241 max = 0; 5241 max = 0;
5242 while (Backup.ToDo[max]!=NULL) max++; 5242 while (Backup.ToDo[max]!=NULL) max++;
5243 for (i=0;i<max;i++) { 5243 for (i=0;i<max;i++) {
5244 ToDo = *Backup.ToDo[i]; 5244 ToDo = *Backup.ToDo[i];
5245 error = Phone->AddToDo(&s,&ToDo); 5245 error = Phone->AddToDo(&s,&ToDo);
5246 Print_Error(error); 5246 Print_Error(error);
5247 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 5247 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
5248 if (gshutdown) { 5248 if (gshutdown) {
5249 GSM_Terminate(); 5249 GSM_Terminate();
5250 exit(0); 5250 exit(0);
5251 } 5251 }
5252 } 5252 }
5253 printmsgerr("\n"); 5253 printmsgerr("\n");
5254 } 5254 }
5255 } 5255 }
5256 } 5256 }
5257 if (Backup.WAPBookmark[0] != NULL) { 5257 if (Backup.WAPBookmark[0] != NULL) {
5258 Bookmark.Location = 1; 5258 Bookmark.Location = 1;
5259 error = Phone->GetWAPBookmark(&s,&Bookmark); 5259 error = Phone->GetWAPBookmark(&s,&Bookmark);
5260 if (error == ERR_NONE || error == ERR_INVALIDLOCATION) { 5260 if (error == ERR_NONE || error == ERR_INVALIDLOCATION) {
5261 if (answer_yes("Add WAP bookmarks")) { 5261 if (answer_yes("Add WAP bookmarks")) {
5262 max = 0; 5262 max = 0;
5263 while (Backup.WAPBookmark[max]!=NULL) max++; 5263 while (Backup.WAPBookmark[max]!=NULL) max++;
5264 for (i=0;i<max;i++) { 5264 for (i=0;i<max;i++) {
5265 Bookmark = *Backup.WAPBookmark[i]; 5265 Bookmark = *Backup.WAPBookmark[i];
5266 Bookmark.Location = 0; 5266 Bookmark.Location = 0;
5267 error=Phone->SetWAPBookmark(&s,&Bookmark); 5267 error=Phone->SetWAPBookmark(&s,&Bookmark);
5268 Print_Error(error); 5268 Print_Error(error);
5269 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max); 5269 printmsgerr("%cWriting: %i percent",13,(i+1)*100/max);
5270 if (gshutdown) { 5270 if (gshutdown) {
5271 GSM_Terminate(); 5271 GSM_Terminate();
5272 exit(0); 5272 exit(0);
5273 } 5273 }
5274 } 5274 }
5275 printmsgerr("\n"); 5275 printmsgerr("\n");
5276 } 5276 }
5277 } 5277 }
5278 } 5278 }
5279 5279
5280 GSM_Terminate(); 5280 GSM_Terminate();
5281} 5281}
5282#endif 5282#endif
5283 5283
5284static void ClearAll(int argc, char *argv[]) 5284static void ClearAll(int argc, char *argv[])
5285{ 5285{
5286 GSM_MemoryStatusMemStatus; 5286 GSM_MemoryStatusMemStatus;
5287 GSM_ToDoStatus ToDoStatus; 5287 GSM_ToDoStatus ToDoStatus;
5288 GSM_CalendarEntryCalendar; 5288 GSM_CalendarEntryCalendar;
5289 GSM_ToDoEntry ToDo; 5289 GSM_ToDoEntry ToDo;
5290 GSM_WAPBookmark Bookmark; 5290 GSM_WAPBookmark Bookmark;
5291 GSM_FMStation Station; 5291 GSM_FMStation Station;
5292 GSM_MemoryEntry Pbk; 5292 GSM_MemoryEntry Pbk;
5293 bool DoClear; 5293 bool DoClear;
5294 5294
5295 GSM_Init(true); 5295 GSM_Init(true);
5296 5296
5297 DoClear = false; 5297 DoClear = false;
5298 MemStatus.MemoryType = MEM_ME; 5298 MemStatus.MemoryType = MEM_ME;
5299 error=Phone->GetMemoryStatus(&s, &MemStatus); 5299 error=Phone->GetMemoryStatus(&s, &MemStatus);
5300 if (error==ERR_NONE && MemStatus.MemoryUsed !=0) { 5300 if (error==ERR_NONE && MemStatus.MemoryUsed !=0) {
5301 if (answer_yes("Delete phone phonebook")) DoClear = true; 5301 if (answer_yes("Delete phone phonebook")) DoClear = true;
5302 } 5302 }
5303 if (DoClear) { 5303 if (DoClear) {
5304 error = Phone->DeleteAllMemory(&s,MEM_ME); 5304 error = Phone->DeleteAllMemory(&s,MEM_ME);
5305 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) { 5305 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) {
5306 for (i=0;i<MemStatus.MemoryUsed+MemStatus.MemoryFree;i++) { 5306 for (i=0;i<MemStatus.MemoryUsed+MemStatus.MemoryFree;i++) {
5307 Pbk.MemoryType = MEM_ME; 5307 Pbk.MemoryType = MEM_ME;
5308 Pbk.Location= i + 1; 5308 Pbk.Location= i + 1;
5309 Pbk.EntriesNum= 0; 5309 Pbk.EntriesNum= 0;
5310 error=Phone->DeleteMemory(&s, &Pbk); 5310 error=Phone->DeleteMemory(&s, &Pbk);
5311 Print_Error(error); 5311 Print_Error(error);
5312 printmsgerr("%cWriting: %i percent",13,(i+1)*100/(MemStatus.MemoryUsed+MemStatus.MemoryFree)); 5312 printmsgerr("%cWriting: %i percent",13,(i+1)*100/(MemStatus.MemoryUsed+MemStatus.MemoryFree));
5313 if (gshutdown) { 5313 if (gshutdown) {
5314 GSM_Terminate(); 5314 GSM_Terminate();
5315 exit(0); 5315 exit(0);
5316 } 5316 }
5317 } 5317 }
5318 printmsgerr("\n"); 5318 printmsgerr("\n");
5319 } else { 5319 } else {
5320 printmsgerr("Done\n"); 5320 printmsgerr("Done\n");
5321 Print_Error(error); 5321 Print_Error(error);
5322 } 5322 }
5323 } 5323 }
5324 5324
5325 DoClear = false; 5325 DoClear = false;
5326 MemStatus.MemoryType = MEM_SM; 5326 MemStatus.MemoryType = MEM_SM;
5327 error=Phone->GetMemoryStatus(&s, &MemStatus); 5327 error=Phone->GetMemoryStatus(&s, &MemStatus);
5328 if (error==ERR_NONE && MemStatus.MemoryUsed !=0) { 5328 if (error==ERR_NONE && MemStatus.MemoryUsed !=0) {
5329 if (answer_yes("Delete SIM phonebook")) DoClear = true; 5329 if (answer_yes("Delete SIM phonebook")) DoClear = true;
5330 } 5330 }
5331 if (DoClear) { 5331 if (DoClear) {
5332 error = Phone->DeleteAllMemory(&s,MEM_SM); 5332 error = Phone->DeleteAllMemory(&s,MEM_SM);
5333 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) { 5333 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) {
5334 for (i=0;i<MemStatus.MemoryUsed+MemStatus.MemoryFree;i++) { 5334 for (i=0;i<MemStatus.MemoryUsed+MemStatus.MemoryFree;i++) {
5335 Pbk.MemoryType = MEM_SM; 5335 Pbk.MemoryType = MEM_SM;
5336 Pbk.Location= i + 1; 5336 Pbk.Location= i + 1;
5337 Pbk.EntriesNum= 0; 5337 Pbk.EntriesNum= 0;
5338 error=Phone->DeleteMemory(&s, &Pbk); 5338 error=Phone->DeleteMemory(&s, &Pbk);
5339 Print_Error(error); 5339 Print_Error(error);
5340 printmsgerr("%cWriting: %i percent",13,(i+1)*100/(MemStatus.MemoryUsed+MemStatus.MemoryFree)); 5340 printmsgerr("%cWriting: %i percent",13,(i+1)*100/(MemStatus.MemoryUsed+MemStatus.MemoryFree));
5341 if (gshutdown) { 5341 if (gshutdown) {
5342 GSM_Terminate(); 5342 GSM_Terminate();
5343 exit(0); 5343 exit(0);
5344 } 5344 }
5345 } 5345 }
5346 printmsgerr("\n"); 5346 printmsgerr("\n");
5347 } else { 5347 } else {
5348 printmsgerr("Done\n"); 5348 printmsgerr("Done\n");
5349 Print_Error(error); 5349 Print_Error(error);
5350 } 5350 }
5351 } 5351 }
5352 5352
5353 DoClear = false; 5353 DoClear = false;
5354 error = Phone->GetNextCalendar(&s,&Calendar,true); 5354 error = Phone->GetNextCalendar(&s,&Calendar,true);
5355 if (error == ERR_NONE) { 5355 if (error == ERR_NONE) {
5356 if (answer_yes("Delete calendar notes")) DoClear = true; 5356 if (answer_yes("Delete calendar notes")) DoClear = true;
5357 } 5357 }
5358 if (DoClear) { 5358 if (DoClear) {
5359 printmsgerr("Deleting: "); 5359 printmsgerr("Deleting: ");
5360 error=Phone->DeleteAllCalendar(&s); 5360 error=Phone->DeleteAllCalendar(&s);
5361 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) { 5361 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) {
5362 while (1) { 5362 while (1) {
5363 error = Phone->GetNextCalendar(&s,&Calendar,true); 5363 error = Phone->GetNextCalendar(&s,&Calendar,true);
5364 if (error != ERR_NONE) break; 5364 if (error != ERR_NONE) break;
5365 error = Phone->DeleteCalendar(&s,&Calendar); 5365 error = Phone->DeleteCalendar(&s,&Calendar);
5366 Print_Error(error); 5366 Print_Error(error);
5367 printmsgerr("*"); 5367 printmsgerr("*");
5368 } 5368 }
5369 printmsgerr("\n"); 5369 printmsgerr("\n");
5370 } else { 5370 } else {
5371 printmsgerr("Done\n"); 5371 printmsgerr("Done\n");
5372 Print_Error(error); 5372 Print_Error(error);
5373 } 5373 }
5374 } 5374 }
5375 5375
5376 DoClear = false; 5376 DoClear = false;
5377 error = Phone->GetToDoStatus(&s,&ToDoStatus); 5377 error = Phone->GetToDoStatus(&s,&ToDoStatus);
5378 if (error == ERR_NONE && ToDoStatus.Used != 0) { 5378 if (error == ERR_NONE && ToDoStatus.Used != 0) {
5379 if (answer_yes("Delete ToDo")) DoClear = true; 5379 if (answer_yes("Delete ToDo")) DoClear = true;
5380 } 5380 }
5381 if (DoClear) { 5381 if (DoClear) {
5382 printmsgerr("Deleting: "); 5382 printmsgerr("Deleting: ");
5383 error=Phone->DeleteAllToDo(&s); 5383 error=Phone->DeleteAllToDo(&s);
5384 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) { 5384 if (error == ERR_NOTSUPPORTED || error == ERR_NOTIMPLEMENTED) {
5385 while (1) { 5385 while (1) {
5386 error = Phone->GetNextToDo(&s,&ToDo,true); 5386 error = Phone->GetNextToDo(&s,&ToDo,true);
5387 if (error != ERR_NONE) break; 5387 if (error != ERR_NONE) break;
5388 error = Phone->DeleteToDo(&s,&ToDo); 5388 error = Phone->DeleteToDo(&s,&ToDo);
5389 Print_Error(error); 5389 Print_Error(error);
5390 printmsgerr("*"); 5390 printmsgerr("*");
5391 } 5391 }
5392 printmsgerr("\n"); 5392 printmsgerr("\n");
5393 } else { 5393 } else {
5394 printmsgerr("Done\n"); 5394 printmsgerr("Done\n");
5395 Print_Error(error); 5395 Print_Error(error);
5396 } 5396 }
5397 } 5397 }
5398 5398
5399 Bookmark.Location = 1; 5399 Bookmark.Location = 1;
5400 error = Phone->GetWAPBookmark(&s,&Bookmark); 5400 error = Phone->GetWAPBookmark(&s,&Bookmark);
5401 if (error == ERR_NONE || error == ERR_INVALIDLOCATION) { 5401 if (error == ERR_NONE || error == ERR_INVALIDLOCATION) {
diff --git a/gammu/gammu.tar.bz2 b/gammu/gammu.tar.bz2
deleted file mode 100644
index 7c921a7..0000000
--- a/gammu/gammu.tar.bz2
+++ b/dev/null
Binary files differ