From c9f6b9a09dfadf23802949f969f3b25fd5c913ab Mon Sep 17 00:00:00 2001
From: Nobuhiro Iwamatsu <iwamatsu@debian.org>
Date: Tue, 20 Mar 2018 11:01:17 +0900
Subject: [PATCH] Fix typo

This commit fixes following typo:

  Refrence -> Reference
  Unkown -> Unknown
  disappered -> disappeared
  WRITTING -> WRITING
  fragement -> fragment
  specifiy -> specify
  errror -> error
  retreive -> retrieve
  Successfuly -> Successfully
  avaiable -> available
  bandwith -> bandwidth/
  futher -> further
  occured/ -> occurred
  immediatelly -> immediately
  Seach -> Search
  Lenght -> Length
  miliseconds -> milliseconds
  missmatch -> mismatch

Signed-off-by: Nobuhiro Iwamatsu <iwamatsu@debian.org>
---
 attrib/att.c               | 2 +-
 emulator/btdev.c           | 2 +-
 monitor/avctp.c            | 6 +++---
 monitor/ll.c               | 2 +-
 obexd/plugins/bluetooth.c  | 2 +-
 obexd/plugins/pcsuite.c    | 2 +-
 obexd/src/manager.c        | 2 +-
 plugins/policy.c           | 4 ++--
 profiles/battery/battery.c | 2 +-
 profiles/gap/gas.c         | 2 +-
 profiles/health/mcap.c     | 2 +-
 profiles/midi/midi.c       | 2 +-
 src/adapter.c              | 6 +++---
 src/shared/util.c          | 2 +-
 tools/btpclient.c          | 2 +-
 tools/ciptool.c            | 2 +-
 tools/parser/att.c         | 2 +-
 tools/parser/avrcp.c       | 8 ++++----
 tools/parser/hci.c         | 6 +++---
 tools/parser/l2cap.c       | 4 ++--
 tools/parser/smp.c         | 4 ++--
 21 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/attrib/att.c b/attrib/att.c
index 826b3c183..085f6004b 100644
--- a/attrib/att.c
+++ b/attrib/att.c
@@ -87,7 +87,7 @@ const char *att_ecode2str(uint8_t status)
 	case ATT_ECODE_IO:
 		return "Internal application error: I/O";
 	case ATT_ECODE_TIMEOUT:
-		return "A timeout occured";
+		return "A timeout occurred";
 	case ATT_ECODE_ABORTED:
 		return "The operation was aborted";
 	default:
diff --git a/emulator/btdev.c b/emulator/btdev.c
index 69d84a5fc..d674a5c4c 100644
--- a/emulator/btdev.c
+++ b/emulator/btdev.c
@@ -155,7 +155,7 @@ struct inquiry_data {
 	int iter;
 };
 
-#define DEFAULT_INQUIRY_INTERVAL 100 /* 100 miliseconds */
+#define DEFAULT_INQUIRY_INTERVAL 100 /* 100 milliseconds */
 
 #define MAX_BTDEV_ENTRIES 16
 
diff --git a/monitor/avctp.c b/monitor/avctp.c
index 94385d252..d4ce5b3c9 100644
--- a/monitor/avctp.c
+++ b/monitor/avctp.c
@@ -1326,13 +1326,13 @@ static bool avrcp_get_play_status(struct avctp_frame *avctp_frame,
 	if (!l2cap_frame_get_be32(frame, &interval))
 		return false;
 
-	print_field("%*cSongLength: 0x%08x (%u miliseconds)",
+	print_field("%*cSongLength: 0x%08x (%u milliseconds)",
 					(indent - 8), ' ', interval, interval);
 
 	if (!l2cap_frame_get_be32(frame, &interval))
 		return false;
 
-	print_field("%*cSongPosition: 0x%08x (%u miliseconds)",
+	print_field("%*cSongPosition: 0x%08x (%u milliseconds)",
 					(indent - 8), ' ', interval, interval);
 
 	if (!l2cap_frame_get_u8(frame, &status))
@@ -1397,7 +1397,7 @@ response:
 		if (!l2cap_frame_get_be32(frame, &interval))
 			return false;
 
-		print_field("%*cPosition: 0x%08x (%u miliseconds)",
+		print_field("%*cPosition: 0x%08x (%u milliseconds)",
 					(indent - 8), ' ', interval, interval);
 		break;
 	case AVRCP_EVENT_BATT_STATUS_CHANGED:
diff --git a/monitor/ll.c b/monitor/ll.c
index c5e110549..07cbfba08 100644
--- a/monitor/ll.c
+++ b/monitor/ll.c
@@ -267,7 +267,7 @@ static void data_packet(const void *data, uint8_t size, bool padded)
 	switch (llid) {
 	case 0x01:
 		if (length > 0)
-			str = "Continuation fragement of L2CAP message";
+			str = "Continuation fragment of L2CAP message";
 		else
 			str = "Empty message";
 		break;
diff --git a/obexd/plugins/bluetooth.c b/obexd/plugins/bluetooth.c
index ba1e0a99a..2c4c8f130 100644
--- a/obexd/plugins/bluetooth.c
+++ b/obexd/plugins/bluetooth.c
@@ -351,7 +351,7 @@ static void name_released(DBusConnection *conn, void *user_data)
 {
 	GSList *l;
 
-	DBG("org.bluez disappered");
+	DBG("org.bluez disappeared");
 
 	for (l = profiles; l; l = l->next) {
 		struct bluetooth_profile *profile = l->data;
diff --git a/obexd/plugins/pcsuite.c b/obexd/plugins/pcsuite.c
index 43ab409e9..fb9c2bf1b 100644
--- a/obexd/plugins/pcsuite.c
+++ b/obexd/plugins/pcsuite.c
@@ -457,7 +457,7 @@ static ssize_t backup_write(void *object, const void *buf, size_t count)
 	if (obj->fd != -1) {
 		ret = write(obj->fd, buf, count);
 
-		DBG("cmd = %s, WRITTING", obj->cmd);
+		DBG("cmd = %s, WRITING", obj->cmd);
 
 		if (ret < 0) {
 			error("backup: cmd = %s", obj->cmd);
diff --git a/obexd/src/manager.c b/obexd/src/manager.c
index a4af627cb..218f5f44a 100644
--- a/obexd/src/manager.c
+++ b/obexd/src/manager.c
@@ -52,7 +52,7 @@
 #define SESSION_INTERFACE OBEXD_SERVICE ".Session1"
 #define AGENT_INTERFACE OBEXD_SERVICE ".Agent1"
 
-#define TIMEOUT 60*1000 /* Timeout for user response (miliseconds) */
+#define TIMEOUT 60*1000 /* Timeout for user response (milliseconds) */
 
 struct agent {
 	char *bus_name;
diff --git a/plugins/policy.c b/plugins/policy.c
index 1f5a506a2..d328b8b87 100644
--- a/plugins/policy.c
+++ b/plugins/policy.c
@@ -284,7 +284,7 @@ static void sink_cb(struct btd_service *service, btd_service_state_t old_state,
 		}
 
 		/* Check if service initiate the connection then proceed
-		 * immediatelly otherwise set timer
+		 * immediately otherwise set timer
 		 */
 		if (old_state == BTD_SERVICE_STATE_CONNECTING)
 			policy_connect(data, controller);
@@ -399,7 +399,7 @@ static void source_cb(struct btd_service *service,
 		}
 
 		/* Check if service initiate the connection then proceed
-		 * immediatelly otherwise set timer
+		 * immediately otherwise set timer
 		 */
 		if (old_state == BTD_SERVICE_STATE_CONNECTING)
 			policy_connect(data, target);
diff --git a/profiles/battery/battery.c b/profiles/battery/battery.c
index 4da4355a1..4114f801d 100644
--- a/profiles/battery/battery.c
+++ b/profiles/battery/battery.c
@@ -176,7 +176,7 @@ static void read_initial_battery_level_cb(bool success,
 	struct batt *batt = user_data;
 
 	if (!success) {
-		DBG("Reading battery level failed with ATT errror: %u",
+		DBG("Reading battery level failed with ATT error: %u",
 								att_ecode);
 		return;
 	}
diff --git a/profiles/gap/gas.c b/profiles/gap/gas.c
index 43b7c3d0e..531900914 100644
--- a/profiles/gap/gas.c
+++ b/profiles/gap/gas.c
@@ -98,7 +98,7 @@ static void read_device_name_cb(bool success, uint8_t att_ecode,
 	char *name;
 
 	if (!success) {
-		DBG("Reading device name failed with ATT errror: %u",
+		DBG("Reading device name failed with ATT error: %u",
 								att_ecode);
 		return;
 	}
diff --git a/profiles/health/mcap.c b/profiles/health/mcap.c
index cc47a1e6d..e5095342c 100644
--- a/profiles/health/mcap.c
+++ b/profiles/health/mcap.c
@@ -2854,7 +2854,7 @@ static void proc_sync_set_req(struct mcap_mcl *mcl, uint8_t *cmd, uint32_t len)
 			return;
 		}
 
-		/* Convert to miliseconds */
+		/* Convert to milliseconds */
 		phase2_delay = bt2ms(phase2_delay);
 
 		if (phase2_delay > 61*1000) {
diff --git a/profiles/midi/midi.c b/profiles/midi/midi.c
index fdc1c007d..d1940c626 100644
--- a/profiles/midi/midi.c
+++ b/profiles/midi/midi.c
@@ -327,7 +327,7 @@ static int midi_accept(struct btd_service *service)
 
 	err = snd_seq_client_id(midi->seq_handle);
 	if (err < 0) {
-		error("Could retreive ALSA client: %s (%d)", snd_strerror(err), err);
+		error("Could retrieve ALSA client: %s (%d)", snd_strerror(err), err);
 		goto _err_handle;
 	}
 	midi->seq_client_id = err;
diff --git a/src/adapter.c b/src/adapter.c
index 6d7d61504..17c865a2a 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -3601,7 +3601,7 @@ static void set_privacy_complete(uint8_t status, uint16_t length,
 		return;
 	}
 
-	DBG("Successfuly set privacy for index %u", adapter->dev_id);
+	DBG("Successfully set privacy for index %u", adapter->dev_id);
 }
 
 static int set_privacy(struct btd_adapter *adapter, uint8_t privacy)
@@ -4586,7 +4586,7 @@ void adapter_auto_connect_add(struct btd_adapter *adapter,
 	bdaddr_type = btd_device_get_bdaddr_type(device);
 
 	if (bdaddr_type == BDADDR_BREDR) {
-		DBG("auto-connection feature is not avaiable for BR/EDR");
+		DBG("auto-connection feature is not available for BR/EDR");
 		return;
 	}
 
@@ -4646,7 +4646,7 @@ void adapter_auto_connect_remove(struct btd_adapter *adapter,
 	bdaddr_type = btd_device_get_bdaddr_type(device);
 
 	if (bdaddr_type == BDADDR_BREDR) {
-		DBG("auto-connection feature is not avaiable for BR/EDR");
+		DBG("auto-connection feature is not available for BR/EDR");
 		return;
 	}
 
diff --git a/src/shared/util.c b/src/shared/util.c
index 986e2b22d..674f7057c 100644
--- a/src/shared/util.c
+++ b/src/shared/util.c
@@ -210,7 +210,7 @@ static const struct {
 	{ 0x111d, "Imaging Referenced Objects"			},
 	{ 0x111e, "Handsfree"					},
 	{ 0x111f, "Handsfree Audio Gateway"			},
-	{ 0x1120, "Direct Printing Refrence Objects Service"	},
+	{ 0x1120, "Direct Printing Reference Objects Service"	},
 	{ 0x1121, "Reflected UI"				},
 	{ 0x1122, "Basic Printing"				},
 	{ 0x1123, "Printing Status"				},
diff --git a/tools/btpclient.c b/tools/btpclient.c
index b217df58f..3e7a06f3a 100644
--- a/tools/btpclient.c
+++ b/tools/btpclient.c
@@ -2305,7 +2305,7 @@ static void btp_gap_pair(uint8_t index, const void *param, uint16_t length,
 	if (!device)
 		goto failed;
 
-	/* This command is asynchronous, send reply immediatelly to not block
+	/* This command is asynchronous, send reply immediately to not block
 	 * pairing process eg. passkey request.
 	 */
 	btp_send(btp, BTP_GAP_SERVICE, BTP_OP_GAP_PAIR, adapter->index, 0,
diff --git a/tools/ciptool.c b/tools/ciptool.c
index e60493d1b..e9816d4ba 100644
--- a/tools/ciptool.c
+++ b/tools/ciptool.c
@@ -312,7 +312,7 @@ static void cmd_release(int ctl, bdaddr_t *bdaddr, int argc, char **argv)
 			return;
 
 		if (cl.cnum != 1) {
-			fprintf(stderr, "You have to specifiy the device address.\n");
+			fprintf(stderr, "You have to specify the device address.\n");
 			exit(1);
 		}
 
diff --git a/tools/parser/att.c b/tools/parser/att.c
index 82766c77f..9d5e032f1 100644
--- a/tools/parser/att.c
+++ b/tools/parser/att.c
@@ -534,7 +534,7 @@ static void att_exec_write_req_dump(int level, struct frame *frm)
 	if (flags == 0x00)
 		printf("cancel all prepared writes ");
 	else
-		printf("immediatelly write all pending prepared values ");
+		printf("immediately write all pending prepared values ");
 
 	printf("(0x%2.2x)\n", flags);
 }
diff --git a/tools/parser/avrcp.c b/tools/parser/avrcp.c
index 5f292722c..7532ee9b1 100644
--- a/tools/parser/avrcp.c
+++ b/tools/parser/avrcp.c
@@ -390,7 +390,7 @@ static const char *error2str(uint8_t status)
 	case AVRCP_STATUS_NOW_PLAYING_LIST_FULL:
 		return "Now Playing List Full";
 	case AVRCP_STATUS_SEARCH_NOT_SUPPORTED:
-		return "Seach Not Supported";
+		return "Search Not Supported";
 	case AVRCP_STATUS_SEARCH_IN_PROGRESS:
 		return "Search in Progress";
 	case AVRCP_STATUS_INVALID_PLAYER_ID:
@@ -1100,7 +1100,7 @@ static void avrcp_get_play_status_dump(int level, struct frame *frm,
 	}
 
 	interval = p_get_u32(frm);
-	printf("SongLength: 0x%08x (%u miliseconds)\n", interval, interval);
+	printf("SongLength: 0x%08x (%u milliseconds)\n", interval, interval);
 
 	p_indent(level, frm);
 
@@ -1166,7 +1166,7 @@ response:
 		break;
 	case AVRCP_EVENT_PLAYBACK_POS_CHANGED:
 		interval = p_get_u32(frm);
-		printf("Position: 0x%08x (%u miliseconds)\n", interval,
+		printf("Position: 0x%08x (%u milliseconds)\n", interval,
 								interval);
 		break;
 	case AVRCP_EVENT_BATT_STATUS_CHANGED:
@@ -1574,7 +1574,7 @@ static void avrcp_passthrough_dump(int level, struct frame *frm)
 
 	len = p_get_u8(frm);
 
-	printf("Lenght: 0x%02x\n", len);
+	printf("Length: 0x%02x\n", len);
 
 	raw_dump(level, frm);
 }
diff --git a/tools/parser/hci.c b/tools/parser/hci.c
index 8c7bd2581..224a3b888 100644
--- a/tools/parser/hci.c
+++ b/tools/parser/hci.c
@@ -1187,7 +1187,7 @@ static inline void qos_setup_dump(int level, struct frame *frm)
 	p_indent(level, frm);
 	printf("Token rate: %d\n", btohl(cp->qos.token_rate));
 	p_indent(level, frm);
-	printf("Peak bandwith: %d\n", btohl(cp->qos.peak_bandwidth));
+	printf("Peak bandwidth: %d\n", btohl(cp->qos.peak_bandwidth));
 	p_indent(level, frm);
 	printf("Latency: %d\n", btohl(cp->qos.latency));
 	p_indent(level, frm);
@@ -3218,7 +3218,7 @@ static inline void qos_setup_complete_dump(int level, struct frame *frm)
 		p_indent(level, frm);
 		printf("Token rate: %d\n", btohl(evt->qos.token_rate));
 		p_indent(level, frm);
-		printf("Peak bandwith: %d\n", btohl(evt->qos.peak_bandwidth));
+		printf("Peak bandwidth: %d\n", btohl(evt->qos.peak_bandwidth));
 		p_indent(level, frm);
 		printf("Latency: %d\n", btohl(evt->qos.latency));
 		p_indent(level, frm);
@@ -3373,7 +3373,7 @@ static inline void flow_spec_complete_dump(int level, struct frame *frm)
 		p_indent(level, frm);
 		printf("Token rate: %d\n", btohl(evt->qos.token_rate));
 		p_indent(level, frm);
-		printf("Peak bandwith: %d\n", btohl(evt->qos.peak_bandwidth));
+		printf("Peak bandwidth: %d\n", btohl(evt->qos.peak_bandwidth));
 		p_indent(level, frm);
 		printf("Latency: %d\n", btohl(evt->qos.latency));
 		p_indent(level, frm);
diff --git a/tools/parser/l2cap.c b/tools/parser/l2cap.c
index a05796482..73b3c7204 100644
--- a/tools/parser/l2cap.c
+++ b/tools/parser/l2cap.c
@@ -303,7 +303,7 @@ static char *status2str(uint16_t status)
 {
 	switch (status) {
 	case 0x0000:
-		return "No futher information available";
+		return "No further information available";
 	case 0x0001:
 		return "Authentication pending";
 	case 0x0002:
@@ -478,7 +478,7 @@ static char *a2mpcplstatus2str(uint8_t status)
 	case A2MP_STATUS_UNABLE_START_LINK_CREATION:
 		return "Failed - Unable to start link creation";
 	case A2MP_STATUS_COLLISION_OCCURED:
-		return "Failed - Collision occured";
+		return "Failed - Collision occurred";
 	case A2MP_STATUS_DISCONN_REQ_RECVD:
 		return "Failed - Disconnect physical link received";
 	case A2MP_STATUS_PHYS_LINK_EXISTS:
diff --git a/tools/parser/smp.c b/tools/parser/smp.c
index 97f02faa8..0ff27c6a7 100644
--- a/tools/parser/smp.c
+++ b/tools/parser/smp.c
@@ -119,7 +119,7 @@ static const char *smpio2str(uint8_t cap)
 	case SMP_IO_KEYBOARD_DISPLAY:
 		return "KeyboardDisplay";
 	default:
-		return "Unkown";
+		return "Unknown";
 	}
 }
 
@@ -145,7 +145,7 @@ static const char *smpreason2str(uint8_t reason)
 	case SMP_REASON_REPEATED_ATTEMPTS:
 		return "Repeated Attempts";
 	default:
-		return "Unkown";
+		return "Unknown";
 	}
 }
 
-- 
2.16.2

diff --git a/android/tester-main.c b/android/tester-main.c
index e9b13537a..7381874ce 100644
--- a/android/tester-main.c
+++ b/android/tester-main.c
@@ -506,20 +506,20 @@ static bool match_mas_inst(btmce_mas_instance_t *exp_inst,
 				btmce_mas_instance_t *rec_inst, int inst_num)
 {
 	if (exp_inst->id && (exp_inst->id != rec_inst->id)) {
-		tester_debug("MAS inst. [%d] id missmatch %d vs %d", inst_num,
+		tester_debug("MAS inst. [%d] id mismatch %d vs %d", inst_num,
 						rec_inst->id, exp_inst->id);
 		return 0;
 	}
 
 	if (exp_inst->scn && (exp_inst->scn != rec_inst->scn)) {
-		tester_debug("MAS inst. [%d] scn missmatch %d vs %d", inst_num,
+		tester_debug("MAS inst. [%d] scn mismatch %d vs %d", inst_num,
 						rec_inst->scn, exp_inst->scn);
 		return 0;
 	}
 
 	if (exp_inst->msg_types &&
 			(exp_inst->msg_types != rec_inst->msg_types)) {
-		tester_debug("Mas inst. [%d] mesg type missmatch %d vs %d",
+		tester_debug("Mas inst. [%d] mesg type mismatch %d vs %d",
 					inst_num, rec_inst->scn, exp_inst->scn);
 		return 0;
 	}
diff --git a/tools/btpclient.c b/tools/btpclient.c
index b217df58f..67264a7b4 100644
--- a/tools/btpclient.c
+++ b/tools/btpclient.c
@@ -2501,7 +2501,7 @@ static void btp_gap_confirm_entry_rsp(uint8_t index, const void *param,
 	} else {
 		reply = l_dbus_message_new_error(ag.pending_req,
 						"org.bluez.Error.Rejected",
-						"Passkey missmatch");
+						"Passkey mismatch");
 	}
 
 	l_dbus_send_with_reply(dbus, ag.pending_req, passkey_confirm_rsp_reply,
diff --git a/tools/l2test.c b/tools/l2test.c
index 18194236b..295c3ddd4 100644
--- a/tools/l2test.c
+++ b/tools/l2test.c
@@ -918,7 +918,7 @@ static void recv_mode(int sk)
 			/* Check sequence */
 			sq = get_le32(buf);
 			if (seq != sq) {
-				syslog(LOG_INFO, "seq missmatch: %d -> %d", seq, sq);
+				syslog(LOG_INFO, "seq mismatch: %d -> %d", seq, sq);
 				seq = sq;
 			}
 			seq++;
@@ -926,14 +926,14 @@ static void recv_mode(int sk)
 			/* Check length */
 			l = get_le16(buf + 4);
 			if (len != l) {
-				syslog(LOG_INFO, "size missmatch: %d -> %d", len, l);
+				syslog(LOG_INFO, "size mismatch: %d -> %d", len, l);
 				continue;
 			}
 
 			/* Verify data */
 			for (i = 6; i < len; i++) {
 				if (buf[i] != 0x7f)
-					syslog(LOG_INFO, "data missmatch: byte %d 0x%2.2x", i, buf[i]);
+					syslog(LOG_INFO, "data mismatch: byte %d 0x%2.2x", i, buf[i]);
 			}
 
 			total += len;
diff --git a/tools/rctest.c b/tools/rctest.c
index 6d84e075b..7b11ade95 100644
--- a/tools/rctest.c
+++ b/tools/rctest.c
@@ -517,7 +517,7 @@ static void recv_mode(int sk)
 			/* Check sequence */
 			sq = btohl(*(uint32_t *) buf);
 			if (seq != sq) {
-				syslog(LOG_INFO, "seq missmatch: %d -> %d", seq, sq);
+				syslog(LOG_INFO, "seq mismatch: %d -> %d", seq, sq);
 				seq = sq;
 			}
 			seq++;
@@ -525,14 +525,14 @@ static void recv_mode(int sk)
 			/* Check length */
 			l = btohs(*(uint16_t *) (buf + 4));
 			if (r != l) {
-				syslog(LOG_INFO, "size missmatch: %d -> %d", r, l);
+				syslog(LOG_INFO, "size mismatch: %d -> %d", r, l);
 				continue;
 			}
 
 			/* Verify data */
 			for (i = 6; i < r; i++) {
 				if (buf[i] != 0x7f)
-					syslog(LOG_INFO, "data missmatch: byte %d 0x%2.2x", i, buf[i]);
+					syslog(LOG_INFO, "data mismatch: byte %d 0x%2.2x", i, buf[i]);
 			}
 #endif
 			total += r;
